私が働いている会社のプロジェクトのほとんどはDrupalで行われているので、Drupalコーディング標準への準拠をチェックする例を検討しますが、以下で説明するすべてのツールはZendなどの他の標準にも適用できます。
さらに最近、PHP Code Snifferを介してDrupalコーディング標準をテストするための一連のルールが登場しました。 インストールと構成は非常に簡単で、最も難しい部分は次に始まります。 全員にコードをチェックさせる方法は? 人的要因の影響は、最初は忘れ、2番目は望んでおらず、3番目はコードにエラーを含めることはできないと単純に信じており、一般にこれは時間の無駄です。
解決策は、開発プロセスでコード検証を
最初のステップは、事前検証フックにコード検証スクリプトを追加することです。 開発者がコードをコミットすると、変更されたファイルが自動的にチェックされます。 エラーが見つかった場合、コミット操作は中止され、エラーのリストが表示されます。

すべてのエラーが修正された場合にのみ、コードをコミットできます。 さて、プロジェクトリポジトリに「不良」コードを追加することはできません。 しかし、それでも人的要因は残っています。 繰り返しますが、誰かが自分のプロジェクトの.git / hooksフォルダーに検証スクリプトを追加するのを忘れ、誰かがエラーを修正するのが面倒で、後でそれを延期するなど、「賢い」人はgit commit --no-verifyなぜなら今では間違いをする時間がないからです。 後者の場合、gitはpre-commitフックを呼び出さず、変更されたファイルはチェックせずにリポジトリに移動します。
これに対処するために、受信後フックを使用します。 このフックは、リモートリポジトリにコードを追加した後に起動します。 post-receiveフックで呼び出されるスクリプトは、変更されたファイルのエラーをチェックし、プロジェクトのコードの品質を担当する1人以上の上級開発者のメールボックスにレポートを送信します。
メールで送信されるレポートは次のようになります。

したがって、プロジェクトのコードの品質を監視するプロセスを自動化するのは簡単です。
この方法の長所:
- 集中管理;
- コード検証を完全に回避することはできません。
- コード検証スクリプトは、ソースファイルを変更せず、修正プログラムの場合にコードの追加をブロックしません。
- スクリプトのインストールと構成は簡単です。
- Drupalコーディング標準エラーに加えて、機能エラーが表示されます。 たとえば、ページにデータを出力するときにtまたはcheck_plain関数を使用するのを忘れたこと(そして、これは既にセキュリティホールです)。
短所:
- 開発の途中でこのツールを追加すると、すべての古いエラーが表示され、最初はエラーをクリアするのが困難になります。
リソース:
UPD 05/19/2012:
構成ファイルを使用したファイル検証を無視する機能が追加されました。
一部のファイルとディレクトリをチェックしないようにするには、プロジェクトルートに.hooks_ignoreファイルを作成する必要があります。 次に、チェックしないファイルとディレクトリへのパスを入力します。 これは、エンジンまたはサードパーティモジュールのコアである場合があります。
サンプル.hooks_ignoreファイルの内容
includes
sites/all/modules/contrib
sites/all/themes/garland/template.php
最初の2行では、すべてのファイルが含まれるディレクトリ全体をスキャンから除外し、3行目では特定のファイルを除外します。
利便性を高めるために、.hooks_ignoreファイルはバージョン管理下で作成する必要があります。これにより、ファイルはリポジトリにも保存され、プロジェクトのすべての開発者に共通となります。 また、受信後フックがリモートリポジトリをチェックインするときに使用できるようにします。
Drupal.orgおよびGitHubのソースコードが更新されました。
この小さなプロジェクトに対するあなたの希望とコメントを楽しみにしています。