Есть ли инструмент статического анализа для исходных файлов PHP? Сам бинарный файл может проверять синтаксические ошибки, но я ищу что-то еще, например:
- неиспользуемые назначения переменных
- массивы, которые назначаются без предварительной инициализации
- и, возможно, предупреждения о стиле кода
- ...
php
code-analysis
static-analysis
eswald
источник
источник
Ответы:
Запустите php в режиме lint из командной строки, чтобы проверить синтаксис без выполнения:
php -l FILENAME
Статические анализаторы более высокого уровня включают в себя:
Анализаторы нижнего уровня включают в себя:
Анализаторы времени выполнения, которые более полезны для некоторых вещей из-за динамической природы PHP, включают в себя:
Библиотеки документации phpdoc и doxygen выполняют своего рода анализ кода. Например, Doxygen можно настроить для визуализации хороших графов наследования с помощью graphviz .
Другой вариант - xhprof , похожий на xdebug, но более легкий, что делает его пригодным для производственных серверов. Инструмент включает в себя интерфейс на основе PHP.
источник
php -l
можно читать только один входной файл за раз (то есть он не будет работать, если вы это сделаетеphp -l file1.php file2.php
). Вместо этого вам нужно использовать-n 1
опцию, которая говоритxargs
использовать только одну строку ввода для командного процесса. Это вместо этого заставит это бежать,php -l file1.php
сопровождаемоеphp -l file2.php
, отдельно. В то же время вы можете использовать-P <n>
для запуска «n» процессов одновременно, чтобы распараллелить выполнение:find . -name '*.inc' -o -name '*.php' -print0 | xargs -0 -n1 -P10 php -l
find /your/path -name '*.php' -exec php -l {} \;
работает надежно.php -l
) работала, вы должны установить ее,display_errors = on
вphp.ini
противном случае вы получите только общее сообщение о том, что есть синтаксические ошибки, но нет сведений о том, какие ошибки или какие строки.-d
переключатель. Напр.php -l -d display_errors=on $FILENAME
Онлайн PHP линт
PHPLint
Проверка унифицированных переменных . Звено 1 и 2, кажется, уже делают это очень хорошо, хотя.
Я не могу сказать, что использовал все это интенсивно, хотя :)
источник
Для полноты - также проверьте phpCallGraph .
источник
PHP Mess Detector - это круто и быстро.
источник
Я пытался использовать $ php -l и пару других инструментов. Однако лучший из моих опытов (YMMV, конечно) - это набор инструментов pfff . Я слышал о pfff на Quora ( http://www.quora.com/Is-there-a-good-PHP-lint-static-analysis-tool )
Вы можете скомпилировать и установить его. Нет хороших пакетов (на моем mint Debian мне пришлось сначала установить зависимости libpcre3-dev, ocaml, libcairo-dev, libgtk-3-dev и libgimp2.0-dev), но это должно стоить intsall.
Результаты сообщаются как
источник
См. CloneDR от Semantic Designs , инструмент «обнаружения клонов», который находит код для копирования / вставки / редактирования. Он найдет точные и почти пропущенные фрагменты кода, несмотря на пробелы, комментарии и даже переменные переименования. Пример отчета об обнаружении PHP можно найти на сайте. (Я автор).
источник
Среда IDE NetBeans проверяет синтаксические ошибки, неиспользуемые переменные и тому подобное. Это не автоматизировано, но отлично работает для небольших или средних проектов.
источник
Там новый инструмент под названием nWire для PHP . Это плагин для исследования кода для Eclipse PDT и Zend Studio 7.x. Он обеспечивает анализ кода в реальном времени для PHP и предоставляет следующие инструменты:
источник
PHP PMD (детектор беспорядка проекта) и PHP CPD (детектор копирования-вставки) как прежняя часть PHPUnit
источник
Существует RIPS - статический анализатор исходного кода для уязвимостей в PHP-скриптах . Источники RIPS доступны на SourceForge .
С сайта RIPS:
источник
Существует абсолютно новый инструмент для статического анализа кода, который называется PHP Analyzer .
Среди многих видов статического анализа он также предоставляет базовые функции автофиксации, см. Документацию .
ОБНОВЛЕНИЕ: PHP-Analyzer теперь устарел проект, но вы все еще можете получить к нему доступ в устаревшей ветке
источник
Вы можете попробовать компилировать с хип-хопом Facebook.
Он выполняет статический анализ всего проекта и может быть тем, что вы ищете.
https://github.com/facebook/hiphop-php
источник