2012-05-14 82 views

回答

11

如果您想覆蓋內置的標準,則需要創建自定義編碼標準。這只是創建一個XML文件的標準定義。

就你而言,你需要整個Zend編碼標準,但是你不需要關於變量名的特定命名約定規則。所以,你會創建一個名爲mystandard.xml文件(命名爲任何你想要的,並把它放在任何你想去的地方),並把下面的內容:

<?xml version="1.0"?> 
<ruleset name="MyStandard"> 
<description>My custom Zend coding standard.</description> 
<rule ref="Zend"> 
    <exclude name="Zend.NamingConventions.ValidVariableName"/> 
</rule> 
</ruleset> 

有很多你可以做更多來定製你的標準,其中包括引入來自其他標準的檢查,覆蓋消息或將其中的一些靜音。你可以看看這裏的文檔:http://pear.php.net/manual/en/package.php.php-codesniffer.annotated-ruleset.php

最後我檢查,PHPStorm不讓你使用自定義編碼標準,無論出於何種原因。通常,您只需輸入標準名稱作爲mystandard.xml文件的完整路徑。如果PHPStorm仍然不讓你這樣做,欺騙它的唯一方法是實際安裝自定義標準。

請注意,這不是您通常需要做的事情,而且有點複雜。但是如果你想嘗試一下,你可以這樣做:

  1. 查找PHPCS安裝在你的系統上的位置。如果您不知道該在哪裏,請嘗試pear config-show | grep php_dir。 PHP_CodeSniffer將位於該目錄下。對我來說,PEAR安裝在/usr/local/PEAR,所以PHP_CodeSniffer在/usr/local/PEAR/PHP/CodeSniffer
  2. 下發現了/usr/local/PEAR/PHP/CodeSniffer/Standards
  3. 創建一個名爲MyStandard新目錄直接把你的mystandard.xml文件存在,但其重命名爲ruleset.xml

要確認標準已安裝,運行phpcs -i。您應該看到

The installed coding standards are MySource, MyStandard, PEAR, PHPCS, Squiz and Zend 

現在,PHPStorm將顯示​​(希望)MyStandard在下拉選項。如果它沒有顯示出來,那麼他們可能已經對列表進行了硬編碼,並且沒有任何方法可以讓它工作而不用直接破解Zend編碼標準。

我希望信息可以幫助您找到解決方案。如果沒有,你可以隨時直接使用自定義標準的命令行上運行PHPCS:

phpcs --standard=/path/to/mystandard.xml /path/to/code 
0

的標準清單沒有硬編碼的,它是從phpcs獲得。如上所述安裝自己的標準將完成這項工作。

+0

我花了下午的好一段時間試圖讓這個工作。 PHPStorm甚至不會加載已安裝標準的列表,檢查器設置中的唯一選項是空白和自定義的,甚至選擇自定義的驗證選項從不顯示。我可以讓phpcs正確運行CLI,但如果按照PHPStorm文檔中的規定工作,它將會很好。 –

2

可以在phpstorm中添加自己的自定義規則集,這可以在項目設置=>檢查=>「PHP代碼嗅探器驗證」中完成,使用編碼標準「自定義」並設置您的根目錄自定義規則集。xml