6

最近、私たちは git に移行し、開発者にレポートを送信するために中央サーバーに受信フックを実装しました (今のところ投稿)。また、開発環境で phpcs を使用してコード標準を自動的にチェックできるようにするいくつかのツールを作成しました。

これはすべて素晴らしく、うまく機能しますが、論理的な理由で準拠していないすべてのファイルを無視するのではなく、コード標準に常に依存できるようにしたいと考えています。これで、デフォルトの PEAR 標準の一部をオーバーライドする独自のルールセットができましたが、可能であればもう少し先に進みたいと考えています。

私たちの問題は、PEAR 標準はすべてのクラス/ビジネス ロジックに最適ですが、ビュー ファイルでは、閉じ括弧を独自の行に配置する必要があるなどのルールを緩めたいということです。問題は、ほとんどの場合、これらのファイルで html を定義していて、制御構造が単純な if-else または foreach ステートメントしかなく、php を開いてから改行、閉じ括弧、改行を追加し、php を閉じるのは少しばかげていることです。

有効にするために必要な構文:

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

代わりにビューに使用したいもの:

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

これにより、コードが読みやすくなります...

私たちは wel ( ) のような代替構文を嫌いますif(..): ... endif;。これは主に、ここでも有効性にいくつかの問題があったためです (すべては空白に関するものです...)。

ファイル全体を ( で) 無視すること// @codingStandardsIgnoreFileは、オプションではありません。

tl;dr

そこで、私たちがやりたいことは、ビュー ファイル用に別のルールセットを定義することです。これにより、従うべき標準が残りますが、これらの面でのルールが緩和され、コードを読みやすくすることができます。

私はまだphpcsについてあまり知識がなく、論理的であるとはいえ、キーワードを使用して自分で解決策を見つけることができませんでした... PEARにも準拠したきちんとしたビューファイルを作成するための提案も大歓迎です...

4

1 に答える 1

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コマンド ライン引数を使用することです。メッセージごとに一意のコードを取得します。これを使用して、特定の除外パターンをルールセットに追加できます。

ルールセットファイルでできることは他にもたくさんあります。こちらのドキュメントをご覧ください。

于 2012-11-12T21:47:02.293 に答える