[Kiev-pm] Perl::Analyzer - статический анализатор кода на Perl

Sergei Mozhaisky sergei.mozhaisky at gmail.com
Sun Dec 4 10:27:54 PST 2016


Всем привет!

В моем последнем проекте на Перле была весьма сложная структура классов -
многоуровневое наследование, переопределение методов, в общем, все прелести
ООП. Зачастую во время отладки приходилось выяснять "откуда же наследуется
этот метод, который валится с ошибкой, и кто его мог переопределить". В
один прекрасный момент мне это надоело, и я стал искать утилиты для
статического анализа кода. Но, к сожалению, у них у всех был один фатальный
недостаток (с) - они не делали то, что было нужно мне. Вот так, из
модуля Module::Dependency, палок и веревок появился Perl::Analyzer:

http://technix.github.io/Perl-Analyzer/

Что он может:

1. Сделать диаграмму классов и наследования:
http://technix.github.io/Perl-Analyzer/images/packages.png
Но это не очень интересно, да и работать с ней не очень удобно

2. Сделать анализ кода и представить результат в виде HTML-файлов:
http://technix.github.io/Perl-Analyzer/perl-analyzer/DBIx-Class-Schema-Versioned.html
Здесь можно увидеть:
- сколько в пакете строк, методов и зависимостей
- как выглядит дерево зависимостей пакета
- список всех пакетов, от которых наследуется наш пакет
- список пакетов которые подключены через use или require
- список методов, определенных в пакете (и какие методы они переопределяют)
- унаследованные методы - откуда они наследуются и где "по дороге"
переопределены
- какие методы других классов явно используются в этом пакете

Вот здесь можно посмотреть, как выглядят результаты анализа модуля
DBIx::Class:
http://technix.github.io/Perl-Analyzer/perl-analyzer/index.html

Надеюсь, кому-нибудь это пригодится :)
С радостью приму фичареквесты и багрепорты.

-- 
Sergei Mozhaisky
http://technix.in.ua/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/kiev-pm/attachments/20161204/5c5c255d/attachment.html>


More information about the Kiev-pm mailing list