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

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

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

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

чтобы можно было без подследствий удалить эти файлы и части кода?
  • Вопрос задан
  • 3626 просмотров
Решения вопроса 1
@Hated
В PhpStorm - правой кнопкой по папке проекта, Inspect Code, Whole Project, Раздел Unused.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
Adamos
@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 - там есть хороший анализатор кода, который поможет вам очистить проект от разного мусора.
Ответ написан
alexiusp
@alexiusp
senior frontend developer
Мы используем SonarQube для подобного рода анализа кода, заодно и покрытие тестами контролируем и возможные проблемы в безопасности: https://www.sonarqube.org/
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы