Как выполнить статический анализ кода в php?[закрыто]
-
22-08-2019 - |
Вопрос
Существует ли инструмент статического анализа для исходных файлов PHP?Сам двоичный файл может проверять наличие синтаксических ошибок, но я ищу что-то, что делает больше, например:
- назначения неиспользуемых переменных
- массивы , которые присваиваются без предварительной инициализации
- и, возможно, предупреждения в стиле кода
- ...
Решение
Запустите php в режиме lint из командной строки, чтобы проверить синтаксис без выполнения:
php -l FILENAME
Статические анализаторы более высокого уровня включают:
- php-сб - Требует http://strategoxt.org/
- PHP_Depend ( пхп_зависимость )
- PHP_CodeSniffer - отличитель
- PHP - Детектор Беспорядка
- ПХПСтан
- PHP-CS-Фиксаж
- фан
Анализаторы более низкого уровня включают:
- PHP_Parser - php - анализатор
- token_get_all токен_get_all (примитивная функция)
Анализаторы времени выполнения, которые более полезны для некоторых задач из-за динамической природы PHPs, включают:
- Xdebug - Ошибка имеет покрытие кода и трассировки функций.
- Мой Инструмент трассировки PHP использует комбинированный статический / динамический подход, основанный на трассировках функций Xdebug.
Библиотеки документации phpdoc и доксиген выполните своего рода анализ кода.Doxygen, например, может быть настроен для отображения хороших графиков наследования с графвиз.
Другим вариантом является xhprof, который похож на xdebug, но легче, что делает его подходящим для производственных серверов.Инструмент включает в себя интерфейс на основе PHP.
Другие советы
Проверка неинициализированных переменных.Однако ссылки 1 и 2, похоже, уже делают это просто отлично.
Хотя я не могу сказать, что я интенсивно использовал что-либо из этого :)
Для полноты - также проверьте phpCallGraph phpCallGraph.
PHP - Детектор Беспорядка это потрясающе и быстро.
Я пробовал использовать $ 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.
Результаты сообщаются следующим образом
rjha@mint ~ $ ~/sw/pfff/scheck ~/code/github/sc/
login-now.php:7:4: CHECK: Unused Local variable $title
go-automatic.php:14:77: CHECK: Use of undeclared variable $goUrl.
Видишь Клонирование семантических конструкций, инструмент "обнаружения клонов", который обнаруживает скопированный / вставленный / отредактированный код.Он найдет точные и почти отсутствующие фрагменты кода, несмотря на пробелы, комментарии и даже переименования переменных.Пример отчета об обнаружении для PHP можно найти на сайте wesite.(Я автор).
Среда IDE NetBeans проверяет наличие синтаксических ошибок, неиспользуемых переменных и тому подобного.Это не автоматизировано, но прекрасно работает для небольших или средних проектов.
Появился новый инструмент под названием nWire для PHP.Это плагин для изучения кода для Eclipse PDT и Zend Studio 7.x.Он позволяет анализировать код PHP в режиме реального времени и предоставляет следующие инструменты:
- Визуализация кода - интерактивное графическое представление компонентов и ассоциаций.
- Навигация по коду - уникальный вид навигации показывает все ассоциации и работает с вами во время написания или чтения кода.
- Быстрый поиск - выполняйте поиск по мере ввода методов, полей, файла и т.д.
PHP PMD (project mess detector) и PHP CPD (copy paste detector) как бывшая часть PHPUnit
Есть RIPS - Статический анализатор исходного кода на предмет уязвимостей в PHP- скриптах.Источники РАЗРЫВОВ, доступные по Кузница источника.
С сайта RIPS:
RIPS - это инструмент, написанный на PHP для поиска уязвимостей в PHP приложения, использующие статический анализ кода.Путем разметки и синтаксического анализа всех файлов исходного кода RIPS способен преобразовывать исходный код PHP в программную модель и обнаруживать чувствительные приемники (потенциально уязвимые функции), которые могут быть испорчены пользовательским вводом (под влиянием вредоносного пользователя) во время выполнения программы.Помимо структурированного вывода найденных уязвимостей RIPS также предлагает интегрированную платформу аудита кода для дальнейшего ручного анализа.
Существует абсолютно новый инструмент для статического анализа кода под названием Анализатор PHP.
Среди многих типов статического анализа он также предоставляет базовые функции автоматической фиксации, см. Документация.
Обновить:PHP-Analyzer теперь является устаревшим проектом, но вы все еще можете получить к нему доступ в устаревшей ветке
Возможно, вы захотите попробовать скомпилировать с помощью Facebook hiphop.
Он выполняет статический анализ всего проекта, и, возможно, это то, что вы ищете.