2012-11-12 15 views
6

最近私たちはgitに移行し、(今のところポストしている)私たちの中央サーバにフックを受け取り、レポートを開発者に送ったり、私たちの開発環境でphpcsを使って私たちのコードスタンダードを自動的にチェックできるようにします。ファイルごとに使用されたphpcsルールセットを上書きすることはできますか?

これはすべてうまくいきますが、うまくいきますが、私たちは常に論理基準に合致しないすべてのファイルを無視せずに、私たちのコード標準に頼ることができるようにしたいと考えています。さて、デフォルトのPEAR標準の中のいくつかのものを上書きする独自のルールセットがありますが、可能であれば少しずつ進んでいきたいと考えています。

私たちの問題は、PEAR標準はすべてのクラス/ビジネスロジックには最適ですが、ビューファイルでは、ルールを緩めるために、閉じ括弧は独自の行にする必要があるということです。問題は、これらのファイルでHTMLを定義していることです。単純なif-elseまたはforeach文でphpを開いた後、改行を追加し、改行を閉じ、改行と閉じることで、少し愚かなことになります。

必要な構文が有効であると:

<?php 
} 
// end of some if statement ?> 

は、私たちが代わりにビューで使用したいのですがどのような:これは我々のコードが読みやすくなり

<?php } // end of some if statement ?> 

...

我々ここでの妥当性にもいくつかの問題があったからです(これは空白に関するものです)。

ファイル全体(// @codingStandardsIgnoreFile)を無視することはできません。

TL; DR

だから、私たちがやりたいことは、我々はまだに付着するための標準を持っているので、私たちのビューファイルのための別々のルールセットを定義しますが、これらの面でリラックスしたルールで我々のコードができるようにしていますまだ読めるようにすることができます。

...私はまだphpcsについてあまり知識豊富ではないよ、と私は、私も論理たキーワードを使用して、任意の解決策を見つけることができませんでした...また、PEARに準拠整頓ビューファイルを作るための任意の提案も歓迎されています

答えて

6

いくつかのファイルから除外したいメッセージがいくつかある場合は、これらの除外をruleset.xmlファイルに直接入れることができます。たとえば:

<!-- 
    You can also be more specific and just exclude some messages. 
    Please note that all message-specific ignore patterns are 
    checked using absolute paths. 

    The code here will just hide the ContainsVar error generated by the 
    Squiz DoubleQuoteUsage sniff for files that match either of the two 
    exclude patterns. 
--> 
<rule ref="Squiz.Strings.DoubleQuoteUsage.ContainsVar"> 
    <exclude-pattern>*/tests/*</exclude-pattern> 
    <exclude-pattern>*/data/*</exclude-pattern> 
</rule> 

私はあなたのビューファイルが保存されている場所がわからないんだけど、あなたは除外パターン(基本的には正規表現)を使用して、それらを一致させることができれば、あなたはいくつかのを緩和することができるでしょうそれらのルール。

ref = ""ビットを調べる最も良い方法は、ビューファイルでphpcsを実行し、-sコマンドライン引数を使用することです。各メッセージについて、固有のコードを取得し、ルールセットに特定の除外パターンを追加することができます。

ルールセットファイルには、他にもたくさんのことがあります。 Check out the docs here.

+0

忘れてしまったこと:バージョン1.4.1に除外ルールのバグがあったため、PHP_CodeSnifferバージョン1.4.2(最新の安定版)を使用していることを確認してください。 –

+0

ありがとう、それは基本的に私が探していたものでした。ビューファイルの場所は、プロジェクトの種類によって異なるため、意図的に漠然としていました。我々はこれを理解することができます:) – sg3s

+0

Aha! "-s"はSniffsを使ってたくさんのgreppingを保存しました。ありがとう:) – markdwhite

関連する問題