@gregorypetrov

Как проанализировать код большого проекта на PHP на наличие неиспользуемых кусков кода и файлов?

Есть проект на PHP (более 400 файлов). В коде делались изменения, но не всегда убирался код, который больше не нужен.

Часть php-файлов с классами больше нигде не подключаются, и часть функций в нигде не вызывается.

Есть ли какие-то инструменты автоматического поиска:
-php-файлов, которые больше нигде не инклюдятся и не используются через автозагрузку классов
- отдельных функций/методов внутри php-файла, которые нигде больше не вызываются

чтобы можно было без подследствий удалить эти файлы и части кода?
  • Вопрос задан
  • 2153 просмотра
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 5
  • @Adamos
    Если файлы в проекте подключаются исключительно по PSR - анализаторы, может, и помогут.
    Но РНР никому не мешает подключать их через отдаленные глубины задниц, как шаблоны и локализация в Битриксе, например. Ни один робот эти дебри не расковыряет в жизни.
    Так что пробуйте анализаторы, конечно. Но не надейтесь, что вы по результатам анализа сможете просто все выбранное взять и безболезненно удалить. Головой думать все равно придется.
    Например, тот же Шторм позволяет сделать быстрый поиск строки по всему проекту. И если название класса не встречается нигде, кроме файла с этим классом - да, возможно, он кандидат на удаление...
    Ответ написан
  • kopyrin
    @kopyrin
    системный администратор, программист,
    Есть еще ряд полезных инструментов, которые могут пригодиться для тестирования качества кода:
    PHPDCD - Dead Code Detector (DCD) для PHP. Он сканирует в PHP проекте все неиспользуемые функции и методы и сообщает о них.
    $ composer global require 'sebastian/phpdcd=*'
    $ sudo ln -s ~/.composer/vendor/bin/phpdcd /usr/local/bin/phpdcd
    Пример проверки:
    project_directory$ phpdcd .
    PHPMD - PHP Mess Detector. Помогает найти в коде потенциальные проблемы, такие как возможные ошибки, субоптимальный код, усложненные выражения, неиспользуемые параметры, методы, свойства.
    $ composer global require 'phpmd/phpmd=2.2.*'
    $ sudo ln -s ~/.composer/vendor/bin/phpmd /usr/local/bin/phpmd
    Пример проверки:
    project_directory$ phpmd . text codesize,unusedcode,naming
    PHP Depend - показывает качество дизайна кода для расширяемости, повторного использования и сопровождения.
    $ composer global require 'pdepend/pdepend=*'
    $ sudo ln -s ~/.composer/vendor/bin/pdepend /usr/local/bin/pdepend
    Пример запуска
    phpDocumentor - инструмент для генерирования документации из PHP кода.
    $ composer global require 'phpdocumentor/phpdocumentor=*'
    $ sudo ln -s ~/.composer/vendor/bin/phpdoc /usr/local/bin/phpdoc
    Пример запуска:
    project_directory$ mkdir docs && phpdoc -d . -t docs
    PHP CodeBrowser - инструмент для создания HTML презентации PHP кода, где выделены участки с выявленными нарушениями по обеспечению качества инструментов, таких как PHP CodeSniffer или PHPMD.
    $ composer global require 'mayflower/php-codebrowser=~1.1'
    $ sudo ln -s ~/.composer/vendor/bin/phpcb /usr/local/bin/phpcb
    Пример запуска:
    project_directory$ mkdir cb && phpcb -s . -o cb
    PHP Copy/Paste Detector (PHPCPD) - инструмент для поиска дублированного кода.
    $ composer global require 'sebastian/phpcpd=*'
    $ sudo ln -s ~/.composer/vendor/bin/phpcpd /usr/local/bin/phpcpd
    Пример проверки:
    project_directory$ phpcpd .
    PHPLOC - инструмент для быстрого измерения размера и анализа структуры PHP проекта.
    $ composer global require 'phploc/phploc=*'
    $ sudo ln -s ~/.composer/vendor/bin/phploc /usr/local/bin/phploc
    Пример проверки:
    project_directory$ phploc --log-xml phploc.xml .
    PHP CodeSniffer - набор из двух PHP инструментов. Основной - phpcs, позволяет выявить нарушения стандартов кодирования в PHP, CSS и JS файлах. И второй - phpcbf, позволяет проводить автоматическую коррекцию стандартов. PHP CodeSniffer является важным инструментом , благодаря которому код остается чистым и последовательным.
    $ composer global require 'squizlabs/php_codesniffer=*'
    $ sudo ln -s ~/.composer/vendor/bin/phpcs /usr/local/bin/phpcs
    Дополнительная проверка стандарта Symfony2 для PHP CodeSniffer:
    $ cd ~/.composer/vendor/squizlabs/php_codesniffer/CodeSniffer/Standards
    $ git clone git://github.com/escapestudios/Symfony2-coding-standard.git Symfony2
    $ cd Symfony2
    $ git checkout 2.0.1
    Пример проверки:
    project_directory$ find . -type f -name '*.php' -exec phpcs --standard=Symfony2 '{}' ';'
    Ответ написан
  • @sehimmelen
    Скачайте триалку PhpStotm - там есть хороший анализатор кода, который поможет вам очистить проект от разного мусора.
    Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы