我的 TestMyClass.php
文件中有两个类定义(单元测试类),而 PHP Code Sniffer 抱怨每个类必须放在自己的文件中。我该如何抑制这个警告?
class MyClassImpl implements MyInterface
{
// ...
}
class MyClassTest extends \PHPUnit_Framework_TestCase
{
// ...
}
以下是您可以忽略文件中任何部分的注释。
忽略文件中的所有嗅探:
<?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];
// @codingStandardsIgnoreStart
class MyClassTest extends \PHPUnit_Framework_TestCase
{
// @codingStandardsIgnoreEnd
// ...
}
<?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
@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
@codingStandardsIgnoreLine
注释来忽略单独的一行代码。该注释将忽略包含该注释及其下一行的代码。 - JSmitty@codingStandards
注释已被弃用,并替换为//phpcs:disable
等。上面的原始链接仍然有效,并讨论了新语法。 - Spudley