Code Insights

Code Insights では、ユーザーとそのチームが、コード レビュー プロセス全体を通してプル リクエストにおけるコード品質を改善できるように、レポート、アノテーション、評価基準を提供します。利用できる Code Insights として、静的分析レポート、セキュリティ スキャン結果、アーティファクト リンク、ユニット テスト、ビルド ステータスがあります。

前提条件

  • Bitbucket Cloud アカウントが必要です。

  • 1 つ以上のプル リクエストまたはパイプラインが必要です。

  • パイプラインを使用している場合は、統合機能を使用する必要があります。詳細

サードパーティ プロバイダーの場合は、Bitbucket Cloud にレポートを追加すると、コード カバレッジ、コード品質、デプロイ情報などの情報をプル リクエストに取得できます。既存の統合機能をお探しの場合は、Bitbucket Cloud にレポートを投稿するツールが Marketplace にすでに多数提供されています。

レポート

プル リクエストでレポートを表示する

  1. プル リクエストに移動します。

  2. 左側のナビゲーション サイドバーで、[レポート] をクリックします。また、右のサイドバーからレポートを表示できます。

パイプまたは統合機能をセットアップしていない場合は、レポートを表示できるようになりません。利用可能なパイプの一覧を確認するか、パイプの記述方法を確認します。

注釈付きレポートを差分表示で表示する

レポートがある場合、注釈は既定で有効になっているため、注釈付きのレポートを 1 行またはファイル単位で表示できます。利用可能な注釈の集約ビューを表示するには、右側のサイドバーの [レポート] セクション (カード) をクリックします。

レポートの注釈を無効または非表示にする

差分表示から注釈を無効にするには、プル リクエストの右上隅にある [設定] ボタンを選択して、[表示] にリストされている [注釈] チェックボックスをチェックします。

特定のプル リクエストの注釈を非表示にするには、[その他のオプション] ボタン (...) を選択して [Hide annotations (注釈を非表示にする)] をクリックします。

hide_annotations

パイプラインでレポートを表示する

  1. 左側のナビゲーション サイドバーで [Pipelines] を選択します。

  2. レポートを表示するパイプラインを選択します。

  3. パイプライン モーダルの下部にある # reports リンクをクリックして、詳細なレポートを表示します。

Reports-API を使用してレポートをアップロードする

サードパーティ プロバイダは REST-API を使用してレポートを直接アップロードすることもできます。レポートは 1 つのコミットに基づきます。

コード レポート用 REST API の Open API に関するドキュメント一式は、次のリンクから入手できます。https://developer.atlassian.com/bitbucket/api/2/reference/search?q=tag:reports


レポートの作成

レポートを作成する場合は、必ずそのコミットのすべてのレポートで一意となる ID を生成してください。自社システムにすでに存在する ID を使用する場合は、競合を防ぐためにシステム名を先頭に追加することをお勧めします (例: mySystem-001)。

cURL リクエストの例

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 curl --request PUT 'https://api.bitbucket.org/2.0/repositories/<username>/<repository-name>/commit/<commit-hash>/reports/mySystem-001' \ --header 'Content-Type: application/json' \ --data-raw '{ "title": "Security scan report", "details": "This pull request introduces 10 new dependency vulnerabilities.", "report_type": "SECURITY", "reporter": "mySystem", "link": "http://www.mySystem.com/reports/001", "result": "FAILED", "data": [ { "title": "Duration (seconds)", "type": "DURATION", "value": 14 }, { "title": "Safe to merge?", "type": "BOOLEAN", "value": false } ] }'

 

titledetails、および report_type のみがペイロードの必須フィールドです。データ配列の下の要素は自由に定義できます。それらの要素で、ユーザーに伝える任意の情報を表せます。レポート データは必須であり、最大 10 件の要素を含められます。その配列に含まれる情報は、ペイロードのその他のフィールドと共にレポートの先頭に表示されます。

同じエンドポイントを使用して既存のレポートを更新することもできます。URL は、GET および DELETE エンドポイントとして使用することもできます。作成後は、外部 ID ではなく生成された UUID でレポートをアドレス指定できます。さらに、ID なしで …/<commit-hash>/reports の GET を行うと、このコミットに属するすべてのレポートが返されます。

Jira ユーザーのみ: Jira でリモート リンクが利用できるようになりました。レポートにリモート リンクを追加するには、create ペイロードで "remote-link-enabled" フィールドを「true」に設定します。これらのレポートは、Jira の [その他のリンク] タブと Bitbucket のレポートに表示されます。

アノテーション

脆弱性を表すコード行など、注釈は個別の所見であり、レポートの一部として認識されます。これらの注釈は、特定のファイルやファイル内の特定の行に添付できますが、オプションの機能です。注釈は必須ではありませんが、レポートには最大 1,000 件の注釈を含められます。

注釈はレポートと同様、一意の ID でアップロードする必要があります。この ID は、生成された UUID の代わりとして、後からレポートの識別に使用できます。

cURL リクエストの例:

1 2 3 4 5 6 7 8 9 10 curl --request PUT 'https://api.bitbucket.org/2.0/repositories/<username>/<reposity-name>/commit/<commit-hash>/reports/mySystem-001/annotations/mySystem-annotation001' \ --header 'Content-Type: application/json' \ --data-raw '{ "title": "Security scan report", "annotation_type": "VULNERABILITY", "summary": "This line represents a security thread.", "severity": "HIGH", "path": "my-service/src/main/java/com/myCompany/mySystem/logic/Main.java", "line": 42 }'

annotation_typesummary のみがペイロードの必須フィールドです。

また、同じエンドポイントを使用して既存のレポートを更新できます。URL は、GET および DELETE エンドポイントとして使用できます。さらに、POST …/annotations は一括オプションを提供します。このエンドポイントでは、最大 100 件の注釈を一度に作成または更新できます。ペイロードには、注釈オブジェクトの JSON 配列を含める必要があります。

認証

Bitbucket Pipelines を使用することで、追加の認証を行わずに Reports-API を使用できます。これを行うには、各パイプラインと共に実行される、「localhost:29418」のプロキシ サーバーにリクエストを送信する必要があり、有効な Auth-Header がリクエストに自動で追加されます。

cURL リクエストの例

1 curl --proxy 'http://localhost:29418' --request PUT "http://api.bitbucket.org/2.0/repositories/$BITBUCKET_REPO_OWNER/$BITBUCKET_REPO_SLUG/commit/$BITBUCKET_COMMIT/reports/mySystem-001/annotations/mySystem-annotation001"

カスタム パイプを開発する場合も、同じプロキシ サーバーを使用できますが、パイプは Docker コンテナ内で実行されるために URL が少し異なります。

cURL リクエストの例

1 curl --proxy 'http://host.docker.internal:29418' --request PUT "http://api.bitbucket.org/2.0/repositories/$BITBUCKET_REPO_OWNER/$BITBUCKET_REPO_SLUG/commit/$BITBUCKET_COMMIT/reports/mySystem-001/annotations/mySystem-annotation001"

Bitbucket の外部からの呼び出しに関して、認証方法については Bitbucket API 開発者ドキュメントをご参照ください。Reports-API の場合は、リポジトリへのアクセス権を持ち、リポジトリ スコープを使用する必要があります。認証方法については、Bitbucket API 開発者ドキュメントの「Bitbucket Cloud REST API のスコープ」セクションをご参照ください。

その他のヘルプ