<div dir="ltr"><div>Всем привет!</div><div><br></div><div>В моем последнем проекте на Перле была весьма сложная структура классов - многоуровневое наследование, переопределение методов, в общем, все прелести ООП. Зачастую во время отладки приходилось выяснять "откуда же наследуется этот метод, который валится с ошибкой, и кто его мог переопределить". В один прекрасный момент мне это надоело, и я стал искать утилиты для статического анализа кода. Но, к сожалению, у них у всех был один фатальный недостаток (с) - они не делали то, что было нужно мне. Вот так, из модуля Module::Dependency, палок и веревок появился Perl::Analyzer:<br></div><div><br></div><a href="http://technix.github.io/Perl-Analyzer/">http://technix.github.io/Perl-Analyzer/</a><div><br></div><div>Что он может:<br><br>1. Сделать диаграмму классов и наследования:</div><div><a href="http://technix.github.io/Perl-Analyzer/images/packages.png">http://technix.github.io/Perl-Analyzer/images/packages.png</a></div><div>Но это не очень интересно, да и работать с ней не очень удобно<br><div><br></div><div>2. Сделать анализ кода и представить результат в виде HTML-файлов:</div><div><a href="http://technix.github.io/Perl-Analyzer/perl-analyzer/DBIx-Class-Schema-Versioned.html">http://technix.github.io/Perl-Analyzer/perl-analyzer/DBIx-Class-Schema-Versioned.html</a><br clear="all"><div>Здесь можно увидеть:<br>- сколько в пакете строк, методов и зависимостей<br>- как выглядит дерево зависимостей пакета<br>- список всех пакетов, от которых наследуется наш пакет</div><div>- список пакетов которые подключены через use или require</div><div>- список методов, определенных в пакете (и какие методы они переопределяют)</div><div>- унаследованные методы - откуда они наследуются и где "по дороге" переопределены</div><div>- какие методы других классов явно используются в этом пакете</div><div><br></div><div>Вот здесь можно посмотреть, как выглядят результаты анализа модуля DBIx::Class:</div><div><a href="http://technix.github.io/Perl-Analyzer/perl-analyzer/index.html">http://technix.github.io/Perl-Analyzer/perl-analyzer/index.html</a><br></div><div><br></div><div>Надеюсь, кому-нибудь это пригодится :)</div><div>С радостью приму фичареквесты и багрепорты.</div><div><br></div>-- <br><div class="gmail_signature">Sergei Mozhaisky<br><a href="http://technix.in.ua/" target="_blank">http://technix.in.ua/</a></div>
</div></div></div>