Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP是否有一个linter,可以像Java一样显式地处理所有异常?_Php_Exception - Fatal编程技术网

PHP是否有一个linter,可以像Java一样显式地处理所有异常?

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; } 要修复: /**

是否有用于PHP的lint/静态分析器,在未记录或捕获异常时发出警告?考虑这个例子:

// 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