如何使用注释来抑制PHPCS警告


How can I suppress PHPCS warnings using comments?

我的TestMyClass.php在同一个文件中有两个类定义(单元测试类),PHP代码嗅探器抱怨每个类必须单独在文件中。如何抑制此警告?

class MyClassImpl implements MyInterface
{
    // ...
}
class MyClassTest extends 'PHPUnit_Framework_TestCase
{
    // ...
}

您可以使用注释让PHP_CodeSniffer忽略文件中的特定文件或行:https://github.com/squizlabs/PHP_CodeSniffer/wiki/Advanced-Usage#ignoring-files-and-folders

在这种情况下,错误将在第二个类定义中生成,因此您必须像这样编写第二个定义:

// @codingStandardsIgnoreStart
class MyClassTest extends 'PHPUnit_Framework_TestCase
{
    // @codingStandardsIgnoreEnd
    // ...
}

但是,如果不应该检查整个文件,您也可以选择忽略它,可以使用@codingStandardsIgnoreFile注释或在命令行中指定排除(参见前面的链接获取信息)。

如果你发现你经常这样做,并且你不想在你的代码中添加注释,你也可以创建你自己的自定义编码标准。假设您现在正在使用PSR2标准,您将创建一个XML文件(例如,mystandard.xml)并包含以下内容:

<?xml version="1.0"?>
<ruleset name="MyStandard">
 <description>My custom coding standard.</description>
 <rule ref="PSR2" />
 <rule ref="PSR1.Classes.ClassDeclaration.MultipleClasses">
   <severity>0</severity>
 </rule>
</ruleset>
然后像这样运行PHP_CodeSniffer: phpcs --standard=/path/to/mystandard.xml /path/to/code 拥有自己的规则集可以让您做很多事情,包括更改错误消息,更改消息的严重性或类型,包括从其他标准检查,以及设置全局忽略规则。更多信息在这里:https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-ruleset.xml

使用以下注释,您可以忽略文件的任何部分。

忽略文件的所有嗅探:

<?php
// phpcs:ignoreFile

只忽略当前行和下一行:

// phpcs:ignore
public function store($myArray)

忽略当前行:

public function store($myArray) // phpcs:ignore

忽略文件中一定数量的行:

// phpcs:disable
public function store($myArray): void
{
    if (count($myArray) > 3) {
        // Humongous amount of legacy code you don't want to look at
    }
    return;
}
// phpcs:enable

使用// phpcs:ignore// phpcs:disable,您还可以指定要禁用哪些消息,嗅闻,类别或标准,例如:

// phpcs:ignore Squiz.Arrays.ArrayDeclaration.SingleLineNotAllowed
$foo = [1,2,3];

如果你想阅读更多关于这个主题,你可以访问维基。

@codingStandards语法自3.2.0版本起已弃用,请使用phpcs

一些例子:

// phpcs:disable
// phpcs:ignore
// phpcs:enable

查看更多信息:https://github.com/squizlabs/PHP_CodeSniffer/wiki/Advanced-Usage#ignoring-parts-of-a-file

虽然我喜欢上面的答案,但如果你不关心特定的文件,我也会建议这个。

执行命令:

phpcs --config-set show_warnings 0

如下所示:https://github.com/squizlabs/PHP_CodeSniffer/wiki/Configuration-Options hiding-warnings-by-default

关于这样设置配置的注意事项是,如果您删除供应商文件夹或更新库,它们将被清除,您将不得不再次设置它们