Как выполнить статический анализ кода в php?[закрыто]

StackOverflow https://stackoverflow.com/questions/378959

Вопрос

Существует ли инструмент статического анализа для исходных файлов PHP?Сам двоичный файл может проверять наличие синтаксических ошибок, но я ищу что-то, что делает больше, например:

  • назначения неиспользуемых переменных
  • массивы , которые присваиваются без предварительной инициализации
  • и, возможно, предупреждения в стиле кода
  • ...
Это было полезно?

Решение

Запустите php в режиме lint из командной строки, чтобы проверить синтаксис без выполнения:

php -l FILENAME

Статические анализаторы более высокого уровня включают:

Анализаторы более низкого уровня включают:

Анализаторы времени выполнения, которые более полезны для некоторых задач из-за динамической природы PHPs, включают:

Библиотеки документации phpdoc и доксиген выполните своего рода анализ кода.Doxygen, например, может быть настроен для отображения хороших графиков наследования с графвиз.

Другим вариантом является xhprof, который похож на xdebug, но легче, что делает его подходящим для производственных серверов.Инструмент включает в себя интерфейс на основе PHP.

Другие советы

Онлайн PHP lint

PHPLint ( фплинт )

Проверка неинициализированных переменных.Однако ссылки 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.

Он выполняет статический анализ всего проекта, и, возможно, это то, что вы ищете.

https://github.com/facebook/hiphop-php

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top