当前位置:  开发笔记 > 编程语言 > 正文

PHP文件是否有静态代码分析器[如Lint]?

如何解决《PHP文件是否有静态代码分析器[如Lint]?》经验,为你挑选了9个好方法。

是否有PHP文件的静态代码分析器?二进制本身可以检查语法错误,但我正在寻找更多的东西,比如未使用的变量赋值,分配到的数组,而不是先被初始化,以及可能的代码样式警告.开源程序将是首选,但如果强烈建议,我们可能会说服公司支付费用.



1> troelskn..:

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

php -l FILENAME

更高级别的静态分析仪包括:

php-sat - 需要http://strategoxt.org/

PHP_Depend

PHP_CodeSniffer

PHP Mess Detector

PHPStan

PHP-CS-定影液

低级分析仪包括:

PHP_Parser

token_get_all(原始函数)

运行时分析器,由于PHP的动态特性,对某些东西更有用,包括:

Xdebug具有代码覆盖率和功能跟踪.

我的PHP Tracer工具使用一种静态/动态组合方法,基于Xdebug的函数跟踪.

文档库phpdoc和doxygen执行一种代码分析.例如,Doxygen可以配置为使用graphviz呈现漂亮的继承图.

另一种选择是xhprof,类似于xdebug,但更轻,使其适用于生产服务器.该工具包括基于PHP的界面.


尝试所有这些好东西,花了我6小时的生命值!
@dimitko:那是因为`php -l`一次只能读取一个输入文件(也就是说,如果你执行`php -l file1.php file2.php`它将不起作用).相反,你需要使用`-n 1`选项,它告诉`xargs`每个命令进程只使用一个输入行.这将导致它分别运行`php -l file1.php`然后运行`php -l file2.php`.同时,您可以使用`-P `一次运行"n"个进程,以便并行执行:`find.-name'*.inc'-o -name'*.php'-print0 | xargs -0 -n1 -P10 php -l`
`find/your/path -name'*.php'-exec php -l {} \;`工作可靠.
**NB**:要使内置lint函数(`php -l`)起作用,你必须在`php.ini`中设置`display_errors = on`,否则你只会得到关于语法的通用消息错误,但没有关于什么错误或什么行的详细信息.
Synetech - 很好.您可以使用`-d`开关覆盖命令行上的设置.例如`php -l -d display_errors = on $ FILENAME`
PHP_CodeSniffer在开始时对我看起来非常好,但我不能为我的生活使它不显示缩进"错误".它似乎完全忽略了`--error-severity`选项.
@ira I*通过称之为"运行时分析选项"来做他们的提及,但也许我应该更明确一些?

2> Martijn Laar..:

在线PHP lint

PHPLint

单位变量检查.但是,链接1和2似乎已经很好了.

我不能说我已经集中使用了这些,但:)



3> Till..:

为了完整性 - 还要检查phpCallGraph.



4> aredridel..:

PHP Mess Detector非常棒且速度很快.


谢谢!我在寻找一个很棒的.事实上,我拒绝使用任何东西,但很棒的工具.:)

5> rjha94..:

我尝试过使用$ php -l和其他工具.然而,根据我的经验(YMMV,当然)中最好的一个是pfff工具集的方案.我在Quora上听说过pfff(http://www.quora.com/Is-there-a-good-PHP-lint-static-analysis-tool)

您可以编译并安装它.没有很好的软件包(在我的薄荷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.


Scheck总是给我错误“ PHP检查程序需要一个图形文件”。几乎不存在的文档没有示例。

6> Ira Baxter..:

请参阅Semantic Designs的CloneDR,这是一种"克隆检测"工具,可查找复制/粘贴/编辑的代码.尽管有空格,注释甚至可变的重命名,它仍会找到精确和接近错过的代码片段.可以在wesite找到PHP的样本检测报告.(我是作者).


为"我是作者"+1

7> slikts..:

NetBeans IDE检查语法错误,未使用的变量等.它不是自动化的,但适用于中小型项目.



8> zvikico..:

有一个名为nWire for PHP的新工具.它是Eclipse PDT和Zend Studio 7.x的代码探索插件.它支持PHP的实时代码分析,并提供以下工具:

代码可视化 - 组件和关联的交互式图形表示.

代码导航 - 独特的导航视图显示所有关联,并在您编写或读取代码时与您一起使用.

快速搜索 - 在键入方法,字段,文件等时进行搜索



9> erenon..:

PHP PMD(项目混乱检测器)和PHP CPD(复制粘贴检测器)作为PHPUnit的前一部分

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有