Jenkins:PHPプロジェクトの継続的な統合および配信ツールJenkinsは、PHPプロジェクトの継続的な統合と継続的な配信において重要な役割を果たしているオープンソース自動化サーバーであり、リアルタイムでバグを検出および解決し、コードの品質改善の提案を継続的にフィードバックすることができます。
PHPツールとのJenkinsの統合 Jenkinsは、PHP CodesNiffer、PHP MD、PHP CPD、PHP依存、PHPLOC、PHPUNIT、およびPHPDOXなど、幅広いPHPプロジェクトツールと互換性があり、各ツールは独自のコード分析の洞察とメトリックを提供します。ジェンキンスの利点は、チャートと概要を生成し、コマンドラインの検索よりも効率的に問題を提示し、コードの問題を識別して解決しやすくすることです。
既に設定されたツールに加えて、Jenkinsは、PHP CodesNiffer、PHP MD、PHP CPD違反の概要などの追加情報を収集し、各ビルド間のすべてのコミットを示す「変更」の概要を収集します。
ジェンキンスの解釈結果:プロジェクトビューとビルドビュー
ジェンキンスの結果はさまざまなツールから来ており、ジェンキンスGUIのさまざまな場所に配置されます。 2つの異なるページを閲覧します。最初はプロジェクトビューページで、プロジェクト名が上部に表示されます。このページでは、プロジェクトの概要を取得でき、複数のビルドを簡単に比較できます。このページにアクセスして、デフォルトの概要ページからアイテムをクリックしてください。プロジェクトビューページに加えて、ビルドビューページもあります。サイドバーのビルド番号をクリックして、このページに移動できます。ここでは、この特定のビルドに関するさまざまな詳細を表示できます。
この記事では、各ツールとそのレポートコンテンツを段階的に紹介します。最後に、ジェンキンスが私たちのために集めた追加の詳細のいくつかも見ていきます。同じプロジェクトを複数回構築するため、チャートに直線が表示されます。実際のプロジェクトでは、チャートが変動します。
php codesniffer
CodesNifferは、コードが共通のルールセットまたは独自のカスタムルールセットに準拠しているかどうかを確認するためのツールです。この例では、PSR2に対してテストするツールを構成しました。これをbuild.xmlファイルで定義しました。
概要ページには、「CheckStyle Trend」と呼ばれるチャートが表示されます。このチャートは、各ビルドのPSR2問題の数を表しています。コードでは、ほぼ完全にPSR2に準拠しているため、チャートには1つの問題のみが表示されます。
<arg value="--standard=PSR2" />
3つのツールからのデータを組み合わせたページの下にチャートもあります。 CodesNifferはその1つです。
問題がどこにあるかを確認するには、最新のビルドの左メニューの「チェックスタイル警告」をクリックするか、特定のビルドをクリックして、その特定のビルドの「チェックスタイル警告」をクリックしてください。
このページでは、問題の説明をはっきりと見ることができます。複数のフィルターを使用できることに注意してください。上のバーでは、新品の問題と修正された問題の数がはっきりとわかります。番号をクリックして変更を明確に確認できます。要約では、優先順位によって分類された質問をすばやく表示できます。
php md
MDはMESS検出器を表します。このツールは、コードにいくつかの問題を示しようとします。これは、潜在的なバグ、未使用のコード、または複雑なアプローチである可能性があります。利用可能なチェックの完全なリストについては、このページを表示できます。すべてのルールを確認するわけではないことに注意してください。 phpmd.xmlファイルをチェックインするルールを定義できます。PHP CodesNifferと同様に、プロジェクトビューページに、混乱検出が時間の経過とともにどのように進行するかを示すチャートが表示されます。
詳細ページでは、問題を見つける場所に関する詳細情報を入手できます。同じ情報をさまざまな方法で提供するために使用できるタブがたくさんあります。たとえば、「タイプ」をクリックして、各タイプの詳細を確認できます。
php cpd
CPDはコピーペースト検出器を表します。このツールはすべてのコードを分析し、複数の重複した行を探します。重複した行がたくさんある場合は、ロジックが複数のクラス間で共有されるように、特定の部分を書き換える必要があることを意味する場合があります。プロジェクトビューページでは、すべてのビルドの全体的な進捗が再び表示されます。
ご覧のとおり、CompanyFilterクラスには58行がUserFilterおよびTimeCategoryFilterクラスにあります。このデータに基づいて、3つのクラスのほとんどを処理する何らかのベースフィルターまたは実装サービスが必要であると判断できます。ソリューションはあなたの状況に依存し、PHP CPDは問題を発見した場所を教えてください。
php依存
PHP依存は、おそらく理解するのが最も難しいメトリックです。 PHP依存は、コードベースで静的コード分析を実行します。 2つの画像と概要ページを生成します。プロジェクトビューページの上部には、画像を表示するHTMLがいくつかあることに気付くかもしれません。
画像が表示されないという事実は、Jenkins構成でスイッチを切り替える必要があることを意味します。 「ジェンキンスの管理」に移動し、「グローバルセキュリティの構成」に移動します。 「マークアップフォーマッタ」の構成に使用できる選択ボックスがあります。 「安全なHTML」に設定し、設定を保存します。プロジェクトビューページに戻ると、HTMLが2つの画像に変換されていることがわかります。
これらの2つのチャートを完全に理解するために、このツールの公式ドキュメントを読むことをお勧めします。ピラミッドの詳細については、このリンクを表示できます。抽象不安定性チャートの詳細については、このリンクを表示できます。
特定のビルドをクリックして、左側のメニューで「JDepend」を選択することで、詳細を取得できます。次の概要が表示されます。
このページの説明も非常に大きく複雑なので、すべてが説明されている公式のドキュメントにあなたを向けました。
phploc
phplocは、アイテムのサイズを迅速に測定するためのツールです。コードの行の総数、静的メソッドの総数などが表示されます。左側のメニューでは、「プロット」をクリックしてこのツールの結果を取得できます。 11のチャートを使用してこの情報を見つけることができます。以下に、コードとコメントの総数と、メソッド、クラス、プロパティ、および関数の総数を示すチャートのスクリーンショットが表示されます。
phpunit
ジェンキンスの大量の統計は、phpunitによって生成されます。概要のみで、phpunitデータによって生成される3つのチャートが表示されます。
最初のチャートは、テストでカバーされているコードの量を示します。この場合、71.1%です。このカバレッジを生成するために、背景はXdebugを使用します。
2番目のチャートは、あなたのがらくたレベルを示しています。 CRAPは、変化リスク分析と予測を表しています。 CRAPは、コードの複雑さとコードで実行されるテストの量をチェックすることによって計算されます。 PHP MDルールを閲覧した場合、PHP MDがコードの複雑さを確認できることに気付いたかもしれませんが、単体テストを考慮していません。 PHP MDがあなたの複雑さをどのように計算するかを学ぶためにここを読んでください。
最終チャートは、成功したテストの数と失敗したテストの数を示しています。この場合、それらはすべて成功しました。
左側のサイドバーメニューには、PHPunitによって生成された2つのプロジェクトがあります。最初のものはがらくたです。このページでは、現在のがらくたレベルがどれだけ高いかを示すいくつかのチャートの概要を見ることができます。一番下では、実際にどの方法ががらくたとしてマークされているかがわかります。カバレッジと複雑さを示す列に気付くでしょう。
2番目のメニュー項目は「Clover HTMLレポート」です。このページでは、ユニットテストによって上書きされるコンテンツの量をディレクトリごとに概説できます。
ディレクトリをクリックして、ソースコードの洞察を得ることができます。ファイルに到達した場合、それを開いて、上書きの量を行ごとに表示できます。どの部分がテストされているか、どのパーツがテストされていないかを示す色を使用します。ラインの上にホバリングすると、ユニットテストがラインと呼ばれる回数を示します。
phpdox
コードとコメントに基づいてドキュメントを生成するための多くのツールがあります。 PHPDOXは、このタスクを実行できる別のツールです。左側のメニューでは、「APIドキュメント」をクリックしてドキュメントに移動できます。 PHPDoxの利点は、他のすべてのツールの結果も含まれていることです。
その他のページ
以前の記事で設定したツールに加えて、ジェンキンスはお客様のために追加情報を収集します。インストールした違反プラグインは、PHP CodesNiffer、PHP MD、およびPHP CPDの概要を表示する追加のページを作成します。特定のビルドをクリックして、左側のメニューに「変更」という名前のメニュー項目を見つけることもできます。このページにアクセスすると、以前のビルドとこのビルドの間に行われたすべてのコミットの概要が表示されます。変更が行われない場合、ページは空白になります。
結論
この記事では、すべてのツールから得られた指標の種類を注意深く調べます。取得するすべての情報は、コマンドラインで取得することもできます。ジェンキンスの利点は、問題をよりよく表すチャートと概要を作成できることです。最後の部分では、いくつかのツールを置き換えて、いくつかの追加メトリックを追加します。また、CSS、JavaScript、およびHTMLコードを分析する方法についても検討します。
(FAQパーツはここでは省略されています。FAQパーツのコンテンツは記事の主要な内容と非常に繰り返され、重複を避けるために、ここで省略されます。)
以上がJenkinsとのPHPプロジェクトの分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。