2014-02-28 42 views
2

因此,我想要更改PHP CodeSniffer在檢查文件時使用的$lineLimit$absoluteLineLimit的值。一些谷歌搜索後,我試圖讓自己的標準,以促進這一點,但我沒有得到它的工作。工作在Ubuntu 12.04.4LTS並在PHP CodeSniffer我把我的文件夾MyStandard並在子目錄Sniffs我有什麼是我的個人嗅嗅改稱爲LineLimit120Sniff.php如何正確更改PHP CodeSniffer中的行字符限制配置?

的代碼行的限制如下系統目錄

class LineLimit120Sniff extends Generic_Sniffs_Files_LineLengthSniff 
{ 
    public $lineLimit = 100; 
    public $absoluteLineLimit = 120; 
} 

當我嘗試運行phpcs --standard=MyStandard <file>我得到的這個作爲輸出

PHP Notice: Undefined offset: 3 in /usr/share/php/PHP/CodeSniffer.php on line 1189

PHP Fatal error: Cannot redeclare class LineLimit120Sniff in /usr/share/php/PHP/CodeSniffer/Standards/MyStandard/Sniffs/LineLimit120Sniff.php on line 8

我不明白,是如何被重新聲明類..?我究竟做錯了什麼?或者,是否有更簡單的方法來更改$lineLimit設置?

+0

'CD標準的/ usr /共享/ PHP/PHP/CodeSniffer && grep的-r 「類LineLimit120Sniff」 .'。有多個定義? –

回答

4

簡單的方法就是在您喜歡的位置創建一個ruleset.xml,然後在其中插入下面的文本。

<?xml version="1.0"?> 
<ruleset name="MyStandard"> 
    <description>This standard changes the line length</description> 

    <!-- Insert all sniff from PSR2 standard --> 
    <rule ref="PSR2"/> 

    <rule ref="Generic.Files.LineLength"> 
     <properties> 
      <property name="lineLimit" value="100"/> 
      <property name="absoluteLineLimit" value="120"/> 
     </properties> 
    </rule> 
</ruleset> 

使用由

phpcs --standard=/path/to/ruleset.xml test.php 
+0

謝謝,我會試試這個! :)雖然這是爲了工作,所以我可能不會在週一到來,但是很好。有沒有辦法使我的規則集擴展到預裝標準(例如PSR2),而不需要從現有標準複製粘貼? –

+0

我更新了我的答案。您可以參考任何標準,甚至可以從您自己的ruleset.xml中的標準中嗅探。你應該意識到互相干擾的嗅聞。例如,如果PSR2標準還包含檢查行長度的嗅探,則應覆蓋該標準,而不是通用標準中的一個。 –