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

96

我的 TestMyClass.php 文件中有两个类定义(单元测试类),而 PHP Code Sniffer 抱怨每个类必须放在自己的文件中。我该如何抑制这个警告?

class MyClassImpl implements MyInterface
{
    // ...
}

class MyClassTest extends \PHPUnit_Framework_TestCase
{
    // ...
}
4个回答

119

以下是您可以忽略文件中任何部分的注释。

忽略文件中的所有嗅探:

<?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,您还可以指定要禁用的消息、sniff、类别或标准,例如:

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

如果您想了解更多关于这个主题的信息,您可以访问Wiki。其中一些例子来自那里。

117
你可以使用注释来让 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


1
跳过测试文件给你加1!或者,也许你可以使用PHPUnitStandard来处理它们 :-) - cmbuckley
4
文档中可以看到,你还可以使用@codingStandardsIgnoreLine注释来忽略单独的一行代码。该注释将忽略包含该注释及其下一行的代码。 - JSmitty
8
请注意,语法已更改。 @codingStandards 注释已被弃用,并替换为 //phpcs:disable 等。上面的原始链接仍然有效,并讨论了新语法。 - Spudley

35

7

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接