我的TestMyClass.php
在同一个文件中有两个类定义(单元测试类),而PHP Code Sniffer抱怨每个类必须单独放在一个文件中。我怎么能抑制这个警告?
class MyClassImpl implements MyInterface
{
// ...
}
class MyClassTest extends \PHPUnit_Framework_TestCase
{
// ...
}
答案 0 :(得分:72)
您可以使用注释来使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 :(得分:6)
从版本@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
答案 2 :(得分:1)
使用以下注释,您可以忽略文件的任何部分。
忽略文件的所有嗅探:
<?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];
如果您想了解有关此主题的更多信息,可以访问wiki。一些示例是从那里获取的。
答案 3 :(得分:0)
这已略有变化。将phpcs:ignoreFile
用于phpcs 3.2.x
/* phpcs:ignoreFile */
摘自艾哈迈德(Ahmad)链接的squizlabs文档:
注意:在PHP_CodeSniffer版本3.2.0之前,使用// @codingStandardsIgnoreFile而不是// phpcs:ignoreFile。的 @codingStandards语法已弃用,并将在 PHP_CodeSniffer 4.0版。
答案 4 :(得分:0)
虽然我也建议使用这个答案,但是如果您不关心特定文件,我也会建议这个答案。
运行此命令:
phpcs --config-set show_warnings 0
如此处所示: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Configuration-Options#hiding-warnings-by-default
关于以这种方式设置配置的注意事项是,如果删除供应商文件夹或更新库,它们将被清除,而您将不得不再次设置它们。