2013-04-16 13 views
34

Moje ma dwie definicje klas w tym samym pliku (klasa testowania jednostkowego), a kod PHP Sniffer narzeka na każda klasa musi znajdować się w pliku samodzielnie. Jak mogę wyłączyć to ostrzeżenie?Jak mogę ukryć ostrzeżenia PHPCS za pomocą komentarzy?

class MyClassImpl implements MyInterface 
{ 
    // ... 
} 

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

Odpowiedz

64

Można uzyskać PHP_CodeSniffer ignorowanie określonych plików lub wierszy w pliku przy użyciu komentarzy: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Advanced-Usage#ignoring-files-and-folders

w tym wypadku błąd zostanie wygenerowany na drugiej definicji klasy, więc trzeba by napisać druga definicja Ci tak:

// @codingStandardsIgnoreStart 
class MyClassTest extends \PHPUnit_Framework_TestCase 
{ 
    // @codingStandardsIgnoreEnd 
    // ... 
} 

Ale można również zdecydować się po prostu zignorować cały plik, jeśli nie ma być zaznaczone, albo za pomocą komentarz @codingStandardsIgnoreFile lub podając wykluczenia w wierszu poleceń (patrz poprzednie l tusz do informacji).

Jeśli okaże się, że robisz to bardzo często i nie chcesz dodawać komentarzy do kodu, możesz również utworzyć własny niestandardowy standard kodowania. Zakładając, że używasz standard PSR2 teraz, można utworzyć plik XML (np mystandard.xml) i obejmują następujące treści:

<?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> 

następnie uruchomić PHP_CodeSniffer tak: phpcs --standard=/path/to/mystandard.xml /path/to/code

posiadania własny zestaw reguł umożliwia wykonywanie wielu czynności, w tym zmienianie komunikatów o błędach, zmianę wagi lub typu komunikatu, w tym sprawdzanie innych standardów i ustawianie globalnych reguł ignorowania. Więcej informacji: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-ruleset.xml

+0

+1 za pomijanie plików testowych. A może mógłbyś użyć [PHPUnitStandard] (https://github.com/elblinkin/PHPUnit-CodeSniffer) dla :-) – cmbuckley

+3

Z [dokumentacji] (https://github.com/squizlabs/PHP_CodeSniffer/wiki/ Advanced-Usage # ignoring-files-and-folders): Możesz także zignorować pojedynczą linię, używając komentarza '@ kodowanieStandardsIgnoreLine'. Ten komentarz zignoruje wiersz, w którym znajduje się komentarz, oraz następujący wiersz. – JSmitty

Powiązane problemy