gitによるPHPコーディング標準への準拠の確認

多くの場合、さまざまなレベルの開発者がプロ​​ジェクトの開発に参加します。 これは、コードを記述するための厳密な形式がないという事実につながります。 プロジェクトのコードの品質は、上級開発者が常に監視する必要があり、これには多くの時間がかかります。

govnokoder罰してコードレビューを行う人の苦しみ和らげるために、長い間誰もが知っている自動コード検証ツールを使用できます。 これらはPEARとPHPコードスニファーです。


私が働いている会社のプロジェクトのほとんどはDrupalで行われているので、Drupalコーディング標準への準拠をチェックする例を検討しますが、以下で説明するすべてのツールはZendなどの他の標準にも適用できます。

さらに最近、PHP Code Snifferを介してDrupalコーディング標準をテストするための一連のルールが登場しました。 インストールと構成は非常に簡単で、最も難しい部分は次に始まります。 全員にコードをチェックさせる方法は? 人的要因の影響は、最初は忘れ、2番目は望んでおらず、3番目はコードにエラーを含めることはできないと単純に信じており、一般にこれは時間の無駄です。

解決策は、開発プロセスでコード検証を強制的に自発的に実施することです。 各プログラマーにスティックを貼り付ける必要がないように、gitバージョン管理システムを使用します。 gitフックのおかげで、コミットなどの特定のgit操作中に実行される独自のスクリプトを簡単に追加できます。

最初のステップは、事前検証フックにコード検証スクリプトを追加することです。 開発者がコードをコミットすると、変更されたファイルが自動的にチェックされます。 エラーが見つかった場合、コミット操作は中止され、エラーのリストが表示されます。

画像

すべてのエラーが修正された場合にのみ、コードをコミットできます。 さて、プロジェクトリポジトリに「不良」コードを追加することはできません。 しかし、それでも人的要因は残っています。 繰り返しますが、誰かが自分のプロジェクトの.git / hooksフォルダーに検証スクリプトを追加するのを忘れ、誰かがエラーを修正するのが面倒で、後でそれを延期するなど、「賢い」人はgit commit --no-verifyなぜなら今では間違いをする時間がないからです。 後者の場合、gitはpre-commitフックを呼び出さず、変更されたファイルはチェックせずにリポジトリに移動します。

これに対処するために、受信後フックを使用します。 このフックは、リモートリポジトリにコードを追加した後に起動します。 post-receiveフックで呼び出されるスクリプトは、変更されたファイルのエラーをチェックし、プロジェクトのコードの品質を担当する1人以上の上級開発者のメールボックスにレポートを送信します。

メールで送信されるレポートは次のようになります。

画像

したがって、プロジェクトのコードの品質を監視するプロセスを自動化するのは簡単です。

この方法の長所:

短所:

リソース:


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のソースコードが更新されました。

この小さなプロジェクトに対するあなたの希望とコメントを楽しみにしています。

Source: https://habr.com/ru/post/J141447/


All Articles