ホームページ バックエンド開発 PHPチュートリアル JenkinsとのPHPプロジェクトの分析

JenkinsとのPHPプロジェクトの分析

Feb 19, 2025 am 11:41 AM

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" />
ログイン後にコピー

Analyzing a PHP Project with Jenkins 3つのツールからのデータを組み合わせたページの下にチャートもあります。 CodesNifferはその1つです。

問題がどこにあるかを確認するには、最新のビルドの左メニューの「チェックスタイル警告」をクリックするか、特定のビルドをクリックして、その特定のビルドの「チェックスタイル警告」をクリックしてください。

このページでは、問題の説明をはっきりと見ることができます。複数のフィルターを使用できることに注意してください。上のバーでは、新品の問題と修正された問題の数がはっきりとわかります。番号をクリックして変更を明確に確認できます。要約では、優先順位によって分類された質問をすばやく表示できます。

php md

MDはMESS検出器を表します。このツールは、コードにいくつかの問題を示しようとします。これは、潜在的なバグ、未使用のコード、または複雑なアプローチである可能性があります。利用可能なチェックの完全なリストについては、このページを表示できます。すべてのルールを確認するわけではないことに注意してください。 phpmd.xmlファイルをチェックインするルールを定義できます。

PHP CodesNifferと同様に、プロジェクトビューページに、混乱検出が時間の経過とともにどのように進行するかを示すチャートが表示されます。

Analyzing a PHP Project with Jenkins

問題が何であるかを知るには、左側のメニューの「PMD警告」をクリックして、最新のビルドに移動できます。別のビルドを表示する場合は、1つのビルドをクリックして、PMD警告を選択します。 PHP CodesNifferページに似たページに到着します。

Analyzing a PHP Project with Jenkins

上部では、新しい問題がいくつあるか、いくつの問題が固定されているかを再度確認できます。それとは別に、各質問の優先順位を見ることができます。

詳細ページでは、問題を見つける場所に関する詳細情報を入手できます。同じ情報をさまざまな方法で提供するために使用できるタブがたくさんあります。たとえば、「タイプ」をクリックして、各タイプの詳細を確認できます。

Analyzing a PHP Project with Jenkins

ご覧のとおり、「UnsuseformalParameter」が私たちの最大の問題です。それをクリックすると、どのファイルが未使用のパラメーターがあるかを再度確認します。

php cpd

CPDはコピーペースト検出器を表します。このツールはすべてのコードを分析し、複数の重複した行を探します。重複した行がたくさんある場合は、ロジックが複数のクラス間で共有されるように、特定の部分を書き換える必要があることを意味する場合があります。プロジェクトビューページでは、すべてのビルドの全体的な進捗が再び表示されます。

Analyzing a PHP Project with Jenkins

左側のメニューでは、「Duplicate Code」をクリックして、見つかった問題の概要を取得できます。前と同じように、そのビルドの詳細については、[ビルド]をクリックしてください。概要は前のページに似ていることがわかります。詳細については、[詳細]タブをクリックしましょう。

Analyzing a PHP Project with Jenkins

ご覧のとおり、CompanyFilterクラスには58行がUserFilterおよびTimeCategoryFilterクラスにあります。このデータに基づいて、3つのクラスのほとんどを処理する何らかのベースフィルターまたは実装サービスが必要であると判断できます。ソリューションはあなたの状況に依存し、PHP CPDは問題を発見した場所を教えてください。

php依存

PHP依存は、おそらく理解するのが最も難しいメトリックです。 PHP依存は、コードベースで静的コード分析を実行します。 2つの画像と概要ページを生成します。プロジェクトビューページの上部には、画像を表示するHTMLがいくつかあることに気付くかもしれません。

画像が表示されないという事実は、Jenkins構成でスイッチを切り替える必要があることを意味します。 「ジェンキンスの管理」に移動し、「グローバルセキュリティの構成」に移動します。 「マークアップフォーマッタ」の構成に使用できる選択ボックスがあります。 「安全なHTML」に設定し、設定を保存します。プロジェクトビューページに戻ると、HTMLが2つの画像に変換されていることがわかります。

Analyzing a PHP Project with Jenkins

これらの2つのチャートを完全に理解するために、このツールの公式ドキュメントを読むことをお勧めします。ピラミッドの詳細については、このリンクを表示できます。抽象不安定性チャートの詳細については、このリンクを表示できます。

特定のビルドをクリックして、左側のメニューで「JDepend」を選択することで、詳細を取得できます。次の概要が表示されます。

Analyzing a PHP Project with Jenkins

このページの説明も非常に大きく複雑なので、すべてが説明されている公式のドキュメントにあなたを向けました。

phploc

phplocは、アイテムのサイズを迅速に測定するためのツールです。コードの行の総数、静的メソッドの総数などが表示されます。左側のメニューでは、「プロット」をクリックしてこのツールの結果を取得できます。 11のチャートを使用してこの情報を見つけることができます。以下に、コードとコメントの総数と、メソッド、クラス、プロパティ、および関数の総数を示すチャートのスクリーンショットが表示されます。

Analyzing a PHP Project with Jenkins

Analyzing a PHP Project with Jenkins

phpunit

ジェンキンスの大量の統計は、phpunitによって生成されます。概要のみで、phpunitデータによって生成される3つのチャートが表示されます。

Analyzing a PHP Project with Jenkins

最初のチャートは、テストでカバーされているコードの量を示します。この場合、71.1%です。このカバレッジを生成するために、背景はXdebugを使用します。

2番目のチャートは、あなたのがらくたレベルを示しています。 CRAPは、変化リスク分析と予測を表しています。 CRAPは、コードの複雑さとコードで実行されるテストの量をチェックすることによって計算されます。 PHP MDルールを閲覧した場合、PHP MDがコードの複雑さを確認できることに気付いたかもしれませんが、単体テストを考慮していません。 PHP MDがあなたの複雑さをどのように計算するかを学ぶためにここを読んでください。

最終チャートは、成功したテストの数と失敗したテストの数を示しています。この場合、それらはすべて成功しました。

左側のサイドバーメニューには、PHPunitによって生成された2つのプロジェクトがあります。最初のものはがらくたです。このページでは、現在のがらくたレベルがどれだけ高いかを示すいくつかのチャートの概要を見ることができます。一番下では、実際にどの方法ががらくたとしてマークされているかがわかります。カバレッジと複雑さを示す列に気付くでしょう。

2番目のメニュー項目は「Clover HTMLレポート」です。このページでは、ユニットテストによって上書きされるコンテンツの量をディレクトリごとに概説できます。

Analyzing a PHP Project with Jenkins

ディレクトリをクリックして、ソースコードの洞察を得ることができます。ファイルに到達した場合、それを開いて、上書きの量を行ごとに表示できます。どの部分がテストされているか、どのパーツがテストされていないかを示す色を使用します。ラインの上にホバリングすると、ユニットテストがラインと呼ばれる回数を示します。

Analyzing a PHP Project with Jenkins

この例では、IFステートメントの一部が単位テストで呼び出されていないことを明確に確認できます。この場合、これは正しいです。このメソッドは、POSTリクエストではなく、GETリクエストのみを実行します。ユニットテストでPOSTリクエストを実装すると、このIFステートメントはグリーンとマークされます。これにより、ユニットテストの不足している部分を簡単に発見できます。

phpdox

コードとコメントに基づいてドキュメントを生成するための多くのツールがあります。 PHPDOXは、このタスクを実行できる別のツールです。左側のメニューでは、「APIドキュメント」をクリックしてドキュメントに移動できます。 PHPDoxの利点は、他のすべてのツールの結果も含まれていることです。

Analyzing a PHP Project with Jenkins

上部のナビゲーションを使用すると、すべてのクラスの概要を確認できますが、1つのクラスを掘り下げて、すべてのメソッドと説明の概要を確認することもできます。ファイル履歴とソースコードを表示することもできます。

Analyzing a PHP Project with Jenkins

その他のページ

以前の記事で設定したツールに加えて、ジェンキンスはお客様のために追加情報を収集します。インストールした違反プラグインは、PHP CodesNiffer、PHP MD、およびPHP CPDの概要を表示する追加のページを作成します。

特定のビルドをクリックして、左側のメニューに「変更」という名前のメニュー項目を見つけることもできます。このページにアクセスすると、以前のビルドとこのビルドの間に行われたすべてのコミットの概要が表示されます。変更が行われない場合、ページは空白になります。

Analyzing a PHP Project with Jenkins

結論

この記事では、すべてのツールから得られた指標の種類を注意深く調べます。取得するすべての情報は、コマンドラインで取得することもできます。ジェンキンスの利点は、問題をよりよく表すチャートと概要を作成できることです。

最後の部分では、いくつかのツールを置き換えて、いくつかの追加メトリックを追加します。また、CSS、JavaScript、およびHTMLコードを分析する方法についても検討します。

(FAQパーツはここでは省略されています。FAQパーツのコンテンツは記事の主要な内容と非常に繰り返され、重複を避けるために、ここで省略されます。)

以上がJenkinsとのPHPプロジェクトの分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか? セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか? Apr 06, 2025 am 12:02 AM

セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。

PHP 8.1の列挙(列挙)とは何ですか? PHP 8.1の列挙(列挙)とは何ですか? Apr 03, 2025 am 12:05 AM

php8.1の列挙関数は、指定された定数を定義することにより、コードの明確さとタイプの安全性を高めます。 1)列挙は、整数、文字列、またはオブジェクトであり、コードの読みやすさとタイプの安全性を向上させることができます。 2)列挙はクラスに基づいており、トラバーサルや反射などのオブジェクト指向の機能をサポートします。 3)列挙を比較と割り当てに使用して、タイプの安全性を確保できます。 4)列挙は、複雑なロジックを実装するためのメソッドの追加をサポートします。 5)厳密なタイプのチェックとエラー処理は、一般的なエラーを回避できます。 6)列挙は魔法の価値を低下させ、保守性を向上させますが、パフォーマンスの最適化に注意してください。

確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 Apr 03, 2025 am 12:04 AM

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

phpstormでCLIモードをデバッグする方法は? phpstormでCLIモードをデバッグする方法は? Apr 01, 2025 pm 02:57 PM

phpstormでCLIモードをデバッグする方法は? PHPStormで開発するときは、PHPをコマンドラインインターフェイス(CLI)モードでデバッグする必要がある場合があります。

PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? Apr 01, 2025 pm 03:12 PM

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

See all articles