如何使用注释禁止 PHPCS 警告?
我的同一个文件(单元测试类)中有两个类定义,PHP代码嗅探器抱怨每个类都必须在一个文件中。如何禁止显示此警告?TestMyClass.php
class MyClassImpl implements MyInterface
{
// ...
}
class MyClassTest extends \PHPUnit_Framework_TestCase
{
// ...
}
我的同一个文件(单元测试类)中有两个类定义,PHP代码嗅探器抱怨每个类都必须在一个文件中。如何禁止显示此警告?TestMyClass.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];
如果你想阅读更多关于这个主题的信息,你可以访问维基。一些例子就是从那里摘录的。