PHP是否有一个linter,可以像Java一样显式地处理所有异常?
是否有用于PHP的lint/静态分析器,在未记录或捕获异常时发出警告?考虑这个例子:PHP是否有一个linter,可以像Java一样显式地处理所有异常?,php,exception,Php,Exception,是否有用于PHP的lint/静态分析器,在未记录或捕获异常时发出警告?考虑这个例子: // ERROR: InvalidArgumentException must be documented or caught inside method. function divide($a, $b) { if (0 == $b) { throw new InvalidArgumentException(); } return $a / $b; } 要修复: /**
// ERROR: InvalidArgumentException must be documented or caught inside method.
function divide($a, $b)
{
if (0 == $b) {
throw new InvalidArgumentException();
}
return $a / $b;
}
要修复:
/**
* @throws InvalidArgumentException if $b is zero.
*/
function divide($a, $b)
因为它必须被文档化,类似于Java的显式在方法原型上抛出。那么这应该是可能的:
// ERROR: InvalidArgumentException must be documented or caught inside method.
function calc()
{
print divide(6, 2);
}
PHP有一些明显的警告,但在大多数情况下,这些缺陷应该更早发现。有这样做的过梁吗?您可以使用
您需要为PHPDOC添加自己的规则
我想你可以通过以下方式将其添加到规则中:
<?xml version="1.0"?>
<ruleset name="My rules">
<rule ref="Squiz.Commenting.FunctionCommentThrowTag" />
</ruleset>
但我还没有测试过。确认作品。。。现在我要添加phpdoc:/
My phpcs.xml:
<?xml version="1.0"?>
<ruleset name="PSR1/2">
<description>Example</description>
<file>./api</file>
<exclude-pattern>*/Database/Proxies/*</exclude-pattern>
<rule ref="PSR1" />
<rule ref="PSR2" />
<rule ref="Squiz.Commenting.FunctionCommentThrowTag" />
</ruleset>
例子
/美国石油学会
*/数据库/代理/*
$bin/phpcs
文件:…ttpdocs/api/api/Version1/Software/AbstractSoftwareController.php
----------------------------------------------------------------------
发现影响1行的1个错误
----------------------------------------------------------------------
60 |错误|缺少“\DomainException”异常的@throws标记
----------------------------------------------------------------------
时间:5.55秒;内存:19.5Mb
您可以使用bin/phpcs-e--standard=Squiz
查找其他人。-e
表示解释。
$ bin/phpcs
FILE: ...ttpdocs/api/Api/Version1/Software/AbstractSoftwareController.php
----------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
----------------------------------------------------------------------
60 | ERROR | Missing @throws tag for "\DomainException" exception
----------------------------------------------------------------------
Time: 5.55 secs; Memory: 19.5Mb