【入門編】Bitbucketで「Code Insights」を活用し、プルリクエストの品質を自動レポート化する – バージョン管理・CI/CD活用バイブル

エンジニアの皆さん、こんにちは。
開発現場で「プルリクエスト(PR)のレビューって、なぜこんなに疲れるんだろう」と感じたことはありませんか?

レビュアーが「これ、Lint通ってる?」「テストは全部OK?」と一つひとつ確認し、修正を指示する。この繰り返しは、人間がやるべき知的作業の質を大きく下げます。

今日お話しするのは、Bitbucketの「Code Insights」という強力な武器です。これを使えば、面倒なチェック作業をすべてロボットに任せ、PR上に「品質レポート」を直接埋め込むことができます。

これをマスターすれば、あなたのチームのレビューは「バグ探し」から「本質的な設計議論」へと劇的に進化します。さあ、一緒に自動化の深淵へ飛び込みましょう。

—

1. Code Insights とは何か?

Code Insightsは、BitbucketのPR画面に「静的解析やテストの結果を直接表示する」ための機能です。

外部ツール(SonarQubeやESLintなど)の結果をAPI経由で送り込むことで、PRの「Diff(変更差分)」の横に、まるで人間がチェックしたかのようにエラーや警告を表示させることができます。「ツールが言っているから直すべき」という事実を、レビューの場で可視化する。これが品質担保の鉄則です。

—

2. 準備するもの

  • Bitbucket Workspace: 管理権限のあるもの。
  • App Password: CI/CDツールからBitbucket APIを叩くための権限。
  • CI環境: Bitbucket Pipelines(推奨)やJenkinsなど。

今回は、最も手軽で強力な Bitbucket Pipelines を使った「HelloWorld的実装」を紹介します。

—

3. 【実践】Lint結果をPRに報告する仕組みを作る

まずは、簡単なシェルスクリプトで「解析結果をCode Insightsに送る」最小構成を実装しましょう。

ステップ①:App Passwordの発行

Bitbucketの「個人設定」>「アプリパスワード」から、`Repositories` の `Write` 権限を持つパスワードを発行し、Pipelinesの「Repository variables」に `BITBUCKET_PASSWORD` として登録してください。

ステップ②:Pipelinesの設定

`bitbucket-pipelines.yml` を以下のように書きます。

image: python:3.9

pipelines:
default:

  • step:

name: “Code Insights Report”
script:
# 1. ここで静的解析を実行(例: flake8)

  • pip install flake8
  • flake8 . –format=default > lint_results.txt || true

# 2. 解析結果をBitbucket APIへ送信するスクリプトを呼び出す

  • python3 scripts/report_to_bitbucket.py

ステップ③:API連携の心臓部(Pythonスクリプト)

これが最も重要な部分です。`scripts/report_to_bitbucket.py` を用意します。

import requests
import os

Bitbucket APIエンドポイント
url = f”https://api.bitbucket.org/2.0/repositories/{os.environ[‘BITBUCKET_REPO_OWNER’]}/{os.environ[‘BITBUCKET_REPO_SLUG’]}/commit/{os.environ[‘BITBUCKET_COMMIT’]}/reports/lint-001″

レポート内容の定義
payload = {
“title”: “Lint Check Results”,
“details”: “flake8による静的解析レポートです。”,
“report_type”: “LINT”,
“reporter”: “My-Awesome-CI”,
“result”: “FAILED”, # もしくは PASSED
“data”: [
{“title”: “エラー数”, “type”: “NUMBER”, “value”: 10}
]
}

API送信
auth = (os.environ[‘BITBUCKET_USER’], os.environ[‘BITBUCKET_PASSWORD’])
response = requests.put(url, json=payload, auth=auth)
print(f”Status Code: {response.status_code}”)

—

4. マージを自動ブロックする(禁断の果実)

レポートを出すだけでは不十分です。「品質を満たさないコードは、物理的にマージさせない」設定が必要です。

1. Repository Settings > Branching model で `main` ブランチを保護します。
2. Branch permissions に移動します。
3. 「Check for Code Insights」 にチェックを入れます。
4. これで、Code Insightsが `FAILED` ステータスを返している限り、Bitbucketは「Merge」ボタンを無効化します。

これこそが、最強の守りです。 どんなに忙しくても、人間がミスをしても、システムがバグの混入を食い止めてくれます。

—

5. 最後に:なぜこれをやるのか

「自動化」とは、単に楽をするための手段ではありません。
「エンジニアが、より創造的で楽しい作業に集中できるようにするための環境構築」です。

テストが通ったか不安で夜も眠れない、といった悩みは今日で終わりにしましょう。Code Insightsを使いこなせば、PRには常に「健全なコード」だけが届くようになります。

まずは、小さなLintチェックからで構いません。今日、あなたのリポジトリにこの仕組みを一つ埋め込んでみてください。チームの景色が、驚くほどクリアに変わるはずですよ。

もし設定で詰まったら、いつでも聞いてくださいね。応援しています!

タイトルとURLをコピーしました