Code Insights

robotsnoindex

Code Insights は、インサイトを取得し、プル リクエストのコード品質を高めるために適した方法をチームに提供します。このため、通常のコード レビュー プロセスでコード品質に関する課題を表示してそれらに対応することができます。

レポート

レポート機能を使用することで、Bitbucket にレポートを送信してアプリ内で表示することができます。

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

Bitbucket 内でレポートを使用する

Prerequisites

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

  • サイドバーのアバター > [Bitbucket ラボ] > [New pull request experience] の順にクリックして、新しいコード レビュー エクスペリエンスを有効にする必要があります。

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

  • パイプラインを使用している場合、連携機能を使用する必要があります。利用可能なパイプの一覧についてはこちらをご確認ください。

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

プル リクエスト ビューのレポートは、コードの承認やマージを行う際にセキュリティやリスクを評価して、レビュアーが情報に基づき自信をもって決定を下せるように支援します。

手順

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

  2. 右側にレポート セクションが表示されます。このビューは新しいコード レビュー エクスペリエンスのみで使用できます。

  3. パイプまたは連携機能をセットアップしていない場合、レポートは表示できません。利用可能なパイプの一覧についてはこちらをご確認ください。パイプの記述方法についてはこちらをご確認ください。

  4. 設定が適切に完了している場合、右側のパネルにレポート情報の表示が開始されます。


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

手順

  1. パイプラインに移動して、レポートを表示するパイプラインを選択します。

  2. パイプまたは連携機能をセットアップしていない場合、レポートは表示できません。パイプまたは連携リンクの設定方法をご確認ください。

  3. パイプまたは連携機能のセットアップが完了している場合、パイプライン メタデータに移動すると、生成されたレポートの数を表示する新しい行が表示されます。

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
		}
	]
}'


titledetails 、および 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_typesummary のみがペイロードの必須フィールドです。

同じエンドポイントを使用して既存のレポートを更新することもできます。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 スコープが必要となります。

最終更新日 2020 年 6 月 25 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.