Code Insights
Code Insights は、インサイトを取得し、プル リクエストのコード品質を高めるために適した方法をチームに提供します。このため、通常のコード レビュー プロセスでコード品質に関する課題を表示してそれらに対応することができます。
レポート
レポート機能を使用することで、Bitbucket にレポートを送信してアプリ内で表示することができます。
サードパーティ プロバイダはこの方法で、プル リクエストにコードカバレッジ、コードの品質レポート、デプロイ情報など、任意の情報を取り込むことができます。既存の連携機能をお探しの場合は、Bitbucket Cloud にレポートを投稿するツールがすでに多数提供されています。
Bitbucket 内でレポートを使用する
Prerequisites
Bitbucket Cloud アカウントが必要です。
サイドバーのアバター > [Bitbucket ラボ] > [New pull request experience] の順にクリックして、新しいコード レビュー エクスペリエンスを有効にする必要があります。
1 つ以上のプル リクエストまたはパイプラインが必要です。
パイプラインを使用している場合、連携機能を使用する必要があります。利用可能なパイプの一覧についてはこちらをご確認ください。
プル リクエスト セクションでレポートを表示する
プル リクエスト ビューのレポートは、コードの承認やマージを行う際にセキュリティやリスクを評価して、レビュアーが情報に基づき自信をもって決定を下せるように支援します。
手順
プル リクエストに移動します。
右側にレポート セクションが表示されます。このビューは新しいコード レビュー エクスペリエンスのみで使用できます。
パイプまたは連携機能をセットアップしていない場合、レポートは表示できません。利用可能なパイプの一覧についてはこちらをご確認ください。パイプの記述方法についてはこちらをご確認ください。
設定が適切に完了している場合、右側のパネルにレポート情報の表示が開始されます。
パイプライン内でレポートを表示する
手順
パイプラインに移動して、レポートを表示するパイプラインを選択します。
パイプまたは連携機能をセットアップしていない場合、レポートは表示できません。パイプまたは連携リンクの設定方法をご確認ください。
パイプまたは連携機能のセットアップが完了している場合、パイプライン メタデータに移動すると、生成されたレポートの数を表示する新しい行が表示されます。
4. クリックすると詳細レポートが表示されます。
Reports-API を使用してレポートをアップロードする
サードパーティ プロバイダは REST-API を使用してレポートを直接アップロードすることもできます。レポートは 1 つのコミットに基づきます。
注意
コード レポート用の REST-API の完全な OpenAPI ドキュメントについては、以下をご参照ください。
https://developer.atlassian.com/bitbucket/api/2/reference/search?q=tag:reports
レポートとレポート データ
レポートをアップロードする場合は必ず、そのコミットのすべてのレポートで一意となる ID を生成してください。自社システムにすでに存在する ID を使用する場合、競合を防ぐため、システム名を先頭に追加することをおすすめします (例: mySystem-001)。
cURL リクエストの例:
curl --request PUT 'https://api.bitbucket.org/2.0/repositories/<username>/<reposity-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
}
]
}'
title
、details
、および report_type
のみがペイロードの必須フィールドです。データ配列の下の要素は自由に定義できます。それらの要素で、ユーザーに伝えたい任意の情報を表すことができます。レポート データは必須であり、最大 10 件の要素を含めることができます。その配列に含まれる情報はレポートの先頭に、ペイロードのその他のフィールドとともに表示されます。
同じエンドポイントを使用して既存のレポートを更新することもできます。URL は、GET および DELETE エンドポイントとして使用することもできます。作成後は、外部 ID ではなく生成された UUID でレポートをアドレス指定できます。さらに、ID なしで …/<commit-hash>/reports の GET を行うと、このコミットに属するすべてのレポートが返されます。
Annotations
アノテーションは個別の所見で、レポートの一部として認識されます (脆弱性を表すコード行など)。これらのアノテーションは、特定のファイルやファイル内の特定の行に添付できますが、オプションの機能です。アノテーションは必須ではありませんが、レポートには最大 1000 件のアノテーションを含めることができます。
アノテーションはレポートと同様、一意の ID でアップロードする必要があります。この ID は生成された UUID の代わりとして、後からレポートの識別に使用できます。
cURL リクエストの例:
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_type
と summary
のみがペイロードの必須フィールドです。
同じエンドポイントを使用して既存のレポートを更新することもできます。URL は、GET および DELETE エンドポイントとして使用できます。さらに、POST …/annotations は一括オプションを提供します。このエンドポイントでは、最大 100 件のアノテーションを一度に作成または更新できます。ペイロードにはアノテーション オブジェクトの JSON 配列を含める必要があります。
認証
Bitbucket Pipelines を使用することで、追加の認証を行わずに Reports-API を使用できます。これを行うには、各パイプラインとともに実行される、localhost:29418 のプロキシ サーバーにリクエストを送信する必要があり、有効な Auth-Header がリクエストに自動的に追加されます。例:
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 --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 外からの呼び出しの場合、こちらのページで認証について確認してください。Reports-API の場合、Repository: Read スコープが必要となります。