2012-11-22 46 views
5

修改PEAR的標準,我想作一個小小的變化,爲我們的phpcs驗證PEAR標準。目前PEAR要求你寫else語句是這樣的:爲phpcs

} else { 

我們希望他們這樣寫:

} 
else { 

我怎樣可以着手對這種變化?

+0

是您的代碼在網上提供?我也想這樣設計我的代碼,但我不想排除PEAR.ControlStructures.ControlSignature。 – TheFox

回答

5

做到這一點的唯一方法是使用ruleset.xml文件編寫自己的編碼標準。它需要導入整個PEAR編碼標準,但不包括執行此檢查的特定嗅探。這一點可以通過單個XML文件完成。

但沒有內置嗅探強制實施else語法,你正在尋找的類型。因此,爲了執行該操作,您需要編寫自定義嗅探,這更復雜,因爲您還必須將其存儲在某處。

如果你想嘗試簡單的自定義編碼標準入手,創建一個名爲ruleset.xml文件,使這個內容:

<?xml version="1.0"?> 
<ruleset name="MyStandard"> 
<description>My custom coding standard.</description> 
<rule ref="PEAR"> 
    <exclude name="PEAR.ControlStructures.ControlSignature"/> 
</rule> 
</ruleset> 

然後像這樣運行PHP_CodeSniffer:

phpcs --standard=/path/to/ruleset.xml /path/to/code 

這將根據PEAR編碼標準檢查您的代碼,但排除對控制結構的特定檢查。如果這是你需要的,你可以在那裏停下來。如果你有一個人想要運行這個自定義標準,只需給他們文件,他們也可以使用它。

有關於ruleset.xml格式在這裏更多的信息:https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-ruleset.xml

如果你想繼續前進,編寫自定義嗅,最好是先從基礎教程:http://pear.php.net/manual/en/package.php.php-codesniffer.coding-standard-tutorial.php

這將解釋一下編碼標準是什麼。然後,您需要創建自己的嗅探,這只是PEAR的一個副本,稍微改變了您如何控制結構。 PEAR嗅探在這裏:https://github.com/squizlabs/PHP_CodeSniffer/blob/master/CodeSniffer/Standards/PEAR/Sniffs/ControlStructures/ControlSignatureSniff.php

沒有測試,我假設你想要將} else {EOL',更改爲}EOLelse {EOL',,看看是否有效。

+0

感謝Greg,在其他人無法使用之前顯然添加了EOL。我最終借用了Drupal代碼標準的嗅探,並將它們與PEAR合併。感謝您的評論,但有一些很好的信息。 – Noodles