是否有PHP源文件的静态分析工具?

二进制本身可以检查语法错误,但我正在寻找做得更多的东西,比如:

未使用的变量赋值 未初始化就被赋值的数组 可能还有代码风格的警告 ...


当前回答

在线PHP lint

PHPLint

单元变量检查。不过,Link 1和2似乎已经很好地做到了这一点。

不过,我不能说我密集地使用了其中的任何一个:)

其他回答

在线PHP lint

PHPLint

单元变量检查。不过,Link 1和2似乎已经很好地做到了这一点。

不过,我不能说我密集地使用了其中的任何一个:)

从命令行以lint模式运行php以验证语法而不执行:

php -l FILENAME

高级静态分析器包括:

php-sat -需要http://strategoxt.org/ PHP_Depend PHP_CodeSniffer PHP混乱检测器 PHPStan PHP-CS-Fixer 显象

较低级别的分析器包括:

PHP_Parser Token_get_all(原语函数)

由于PHP的动态特性,运行时分析程序对某些事情更有用,包括:

Xdebug具有代码覆盖和函数跟踪。 我的PHP跟踪工具基于Xdebug的函数跟踪,使用静态/动态结合的方法。

文档库phpdoc和Doxygen执行一种代码分析。例如,Doxygen可以配置为使用Graphviz呈现良好的继承图。

另一个选项是xhprof,它类似于Xdebug,但更轻,适合于生产服务器。该工具包括一个基于php的界面。

NetBeans IDE检查语法错误、不常用的变量等。它不是自动的,但对于小型或中型项目来说效果很好。

我尝试过使用php -l和其他一些工具。

然而,在我的经验中,最好的一个(当然,您的里程可能有所不同)是检查pfff工具集。我在Quora上听说过pfff(有好的PHP lint /静态分析工具吗?)

您可以编译并安装它。没有很好的软件包(在我的Linux Mint Debian系统上,我必须先安装libpcre3-dev、ocaml、libccairo -dev、libgtk-3-dev和libgimp2.0-dev依赖项),但它应该值得安装。

结果报告如下

$ ~/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 Analyzer。PHP Analyzer现在是一个已弃用的项目,但您仍然可以在遗留分支上访问它。

在许多类型的静态分析中,它还提供了基本的自动修复功能,请参阅文档。