2013-04-16 20 views
34

我的TestMyClass.php在同一個文件(單元測​​試類)中有兩個類定義,PHP代碼嗅探器抱怨每個類都必須在文件本身。我怎樣才能壓制這個警告?如何使用註釋來抑制PHPCS警告?

class MyClassImpl implements MyInterface 
{ 
    // ... 
} 

class MyClassTest extends \PHPUnit_Framework_TestCase 
{ 
    // ... 
} 

回答

64

你可以使用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

+0

+1跳過測試文件。或者,也許你可以對這些使用[PHPUnitStandard](https://github.com/elblinkin/PHPUnit-CodeSniffer):-) – cmbuckley

+3

從[documentation](https://github.com/squizlabs/PHP_CodeSniffer/wiki/高級用法#忽略文件和文件夾):您也可以使用@ codingStandardsIgnoreLine註釋忽略單個行。此評論將忽略評論所在的行,以及以下行。 – JSmitty