程式碼的靜態分析是 team work 或者 CI 中很重要的一個環節 而靜態分析,其中的一項功能 coding standard 和 coding style的分析更是可以保護你的眼睛 squizlabs/php_codesniffer 內建有許多 ruleset, 像是 PHPCS, PSR2, PSR1, Squiz, PEAR, Zend etc... 如果你仔細去看每個 Standards 目錄下的 ruleset.xml 和 Sniffs 目錄大概就可以看出 其實他們是互相 include, 然後在自己的 Sniffs 裡做 Overide 或者是定義自己的新規則 例如 PSR2 的 ruleset.xml 裡面就宣告了 reference rule 是 PSR1 而 PSR1 又 include 了像是 Squiz 之類的 如果因為某些歷史/framework 的因素, 你希望盡可能地採用 PSR2, 但是又希望 exclude 掉其中的某一部分, 例如 PSR0 這時候你可以在 Standards 目錄下建立自己客製化的 ruleset, 目錄裡面只要放 ruleset.xml 內容是 reference PSR2, 再另外加上你想 exclude 掉的 rule. 但是你要怎麼知道有那些 rule 可以 exclude 呢? 以你想套用大部分的 PSR2 ruleset, 但是又想 exclude 掉 PSR 0 為例. 我們知道 PSR2 引用了 PSR1, 而 PSR1 裡面又包含了 PSR0 所以 Standards/PSR1/Sniffs/Classes/ClassDeclarationSniff.php 裡面會檢查 class 有沒有正確宣告 namespace 想 Exclude 掉這個 rule 的話, 我們可以從目錄拆解出 rule name: "PSR1.Classes.ClassDeclaration" 大概就是這樣啦~ 透過客製化自己的 ruleset, 然後再設定 sublime linter 裡的 code sniffer. 就可以馬上讓你的知道, 自己寫的 code 有沒有符合規則. ...