2013-04-16 20 views
34

Benim TestMyClass.php, aynı dosyada (birim test sınıfı) iki sınıf tanımına sahiptir ve PHP Kod Sniffer'ın her biri hakkında şikayet eder. Her sınıfın kendi başına bir dosyada olması gerekir. Bu uyarıyı nasıl bastırırım?Yorumlar kullanarak PHPCS uyarılarını nasıl önleyebilirim?

class MyClassImpl implements MyInterface 
{ 
    // ... 
} 

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

cevap

64

Sen PHP_CodeSniffer yorumları kullanarak bir dosyada belirli dosyaları veya satırları görmezden alabilirsiniz: yazmayı olurdu böylece bu durumda https://github.com/squizlabs/PHP_CodeSniffer/wiki/Advanced-Usage#ignoring-files-and-folders

, hata, ikinci sınıf tanımının üzerine oluşturulacak Bu gibi ikinci tanım:

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

Ama kontrol edilmesi gerekiyordu, ya @codingStandardsIgnoreFile yorumunu kullanarak veya komut satırında dışlamaları belirterek değilse de (bkz sadece tüm dosyayı görmezden gelmeyi tercih olabilir önceki l bilgi için mürekkep).

Bunu çok yaptığınızı ve kodunuza yorum eklemek istemezseniz, kendi özel kodlama standartlarınızı da oluşturabilirsiniz. Şu anda PSR2 standardını kullanan varsayarsak, bir XML dosyası (örneğin, mystandard.xml) oluşturun ve aşağıdaki içerik bulunmaktadır ediyorum: böyle

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

PHP_CodeSniffer çalıştırın: phpcs --standard=/path/to/mystandard.xml /path/to/code

sahip olmak, kendi kural kümesi, hata mesajlarını değiştirmek, diğer standartlardaki kontroller dahil olmak üzere bir mesajın ciddiyetini veya türünü değiştirmek ve global göz ardı etme kurallarını belirlemek de dahil olmak üzere birçok şeyi yapmanıza olanak tanır. Daha fazla bilgi için: test dosyalarını atlamak için https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-ruleset.xml

+0

+1. Ya da belki de [PHPUnitStandard] (https://github.com/elblinkin/PHPUnit-CodeSniffer) :-) – cmbuckley

+3

için kullanabilirsiniz. [Belgeler] 'den (https://github.com/squizlabs/PHP_CodeSniffer/wiki/ Advanced-Usage # ignoring-files-and-folders): '@ codingStandardsIgnoreLine 'yorumunu kullanarak tek bir satırı da göz ardı edebilirsiniz. Bu yorum, yorumun açık olduğu satırı ve aşağıdaki satırı dikkate almayacaktır. – JSmitty

İlgili konular