参考PHP 文件是否有静态代码分析器 [如 Lint]?--我正在研究如何在开发人员提交 PHP 文件之前评估它们的内容。 任何合适的解决方案都将通过类似于答案的 SVN 钩子触发:Is it possible to check PHP file syntax from PHP?
我在签入 SVN 时遇到了 PHP 文件的自动语法检查,这是我想要的角度,但是......php -l
还不够。
例如,给定代码:
if ($foo == 'bar') {
echo $foo;
}
这导致:
2012/01/15 02:51:14 [错误] 694#0: *164 FastCGI 在标准错误中发送:“PHP 通知:未定义变量:foo
相比:
if (isset($foo)) { echo $foo; }
其中一些归结为对编码人员进行最佳实践教育。不幸的是,有些人的学习速度不如其他人快,而确保符合编码标准的唯一方法是减少未经测试或不合规的进入 SVN 的内容。
从这个问题的第一个链接,我尝试过:
- php -l
- 没有通知问题
$foo
- 没有通知问题
- phplint-pure-c-1.0_20110223 - PHPLint
- 没有通知问题
$foo
- 没有通知问题
if ($foo == 'bar') { \_ HERE
==== /mnt/hgfs/workspace/scratch-pad/phpinfo.php:44:警告:比较(未知)==(字符串):无法检查未知类型之间的比较
- phpcs - PHP 代码嗅探器
$foo
尽管PHP 健全性检查表明这是正确的答案,但没有通知问题
- 简单测试
- 非常好,但需要编写糟糕代码的开发人员编写好的单元测试......
所有这些都以自己的方式很有趣,但没有一个人能够捕捉到这些真正只能在运行时发现的问题。
感谢有关此主题的输入/想法。
编辑
有一位发帖人建议 PHPLint 是正确的方法。我想,好吧!鉴于有一个新版本,让我们再试一次: phplint-pure-c-1.1_20120202:
<?php
if ($foo == 'bar') {
echo $foo;
}
?>
简单测试.....................并且,它可以工作并报告 1 个错误,1 个警告。但是,如果在语句之前 添加以下内容:if
<?php
if (isset($foo) && $foo == 'bar') { echo 'man'; }
if ($foo == 'bar') {
echo $foo;
}
?>
它不起作用,并报告 0 个错误,2 个警告。