◀ 用語一覧
NO.19.6

🩺 Code Quality

コード品質

更新: 2026.10.26

一言で

Code Quality は、信頼性・保守性の問題が将来の技術的負債になる前に止める仕組み。

CodeQL ルール + AI 解析 で検出し、PR で修正を提案、リポジトリの健全性をスコア化し、品質基準を満たさないマージも防げる。

Code Quality がカバーする範囲 📖 Docs

2026 年 7 月 20 日 に GA。役割は、コードが古くなっても信頼性・保守性・テストカバレッジを保つこと。GitHub Advanced Security に組み込まれた機能ではなく、その隣に並ぶ独立製品。

▸ 項目を選ぶ。2 つ目のタブは参考として Code Scanning

主目的

主目的

コードを信頼できて直しやすい状態に保つ。リファクタが安全になり、保守コストが下がり、コードベースが整う。

セキュリティ脆弱性とコーディングエラーを本番に届く前に検出する。

代表的な finding

代表的な finding

2 系統ある。Reliability: 重複した if 条件、到達しないコード、長さとの off-by-one 比較、エラーチェック漏れ、未初期化の変数。Maintainability: 無意味な代入、効果のない式、ループ内の DB クエリ。

SQL injection、XSS、path traversal、危険な data flow。

解析エンジン

解析エンジン

CodeQL の品質ルールと、固定ルールでは拾えないパターンを見る AI 解析。

CodeQL のセキュリティクエリ、または SARIF をアップロードするサードパーティツール。

AI findings

AI findings

Standard findings と同じく信頼性と保守性が対象。固定ルールに縛られず、全言語を解析する。ただしマージ後、default branch で最近変更されたファイルが対象で、PR 上では実行しない。結果は AI findings に表示。Docs ↗

AI Scan はPR の変更のみを対象に脆弱性を検出。対応するのは CodeQL がカバーしていない一部の言語とフレームワーク。例: PHP、Bash、HCL、Dockerfile、JSP、Blazor。リポジトリ全体のスキャンや backlog アラートはない。Docs ↗

可視化

可視化

Standard findings は 2 か所に出る。PR 上の bot コメントと、default branch を対象としたリポジトリの Security タブ。それぞれ Error / Warning / Note で格付けされ、その格付けが品質スコアに反映される。

アラートは severity と CWE で格付けされ、Security overview に集約される。

マージ制御

マージ制御

ruleset の品質・カバレッジしきい値。強制する前に evaluate モードで影響を測れる。

code scanning check とセキュリティのマージ保護。

クエリ本数

クエリ本数

standard のクエリ数: C# 69、Go 22、Java/Kotlin 89、JS/TS 98、Python 101、Ruby 3、Rust 1。合計 383 本。C/C++、Swift、Actions は未対応。

default のクエリ数: Actions 18、C/C++ 61、C# 59、Go 36、Java/Kotlin 80、JS/TS 89、Python 45、Ruby 44、Rust 36、Swift 29。合計 497 本、うち 413 本がアラートを出す。

項目を選択 ▸

🔑 両方使う。Code Scanning は悪用可能なリスク、Code Quality は長期的なコードの健全性を守る。

対応言語 📖 Docs

CodeQL のルールベース解析は C#, Go, Java, JS/TS, Python, Ruby の 6 言語のみ。C/C++ や Swift などで使えるのは AI 解析とカバレッジだけ。

機能✅ CodeQL 対応 6 言語⚠️ C/C++ ほか
🔍 PR の CodeQL finding + Autofix✅❌
📋 default branch の Standard findings✅❌
🤖 Agentic Autofix✅❌
🚧 finding による品質ゲート✅❌
🧠 AI 解析(最近変更されたファイル)✅✅
🧪 カバレッジ(Cobertura XML)✅✅

💡 PR 上に出るのは CodeQL の finding だけ。C/C++ の PR レビューは Copilot code review ↗(別製品)で補う。

マージ前に修正

AI がコードの大半を書くなら、品質を守るのは PR ごとの ruleset 品質ゲート。GitHub 社内では finding の 67.3% をマージ前に解消している(GitHub, 2026 ↗)。

🟢 PR ごとにゲート🔴 ゲートなし
🤖 エージェント見落としをゲートが検出見落としがそのままマージ
🔧 修正同じ PR 内で Autofix後で修正 PR、後回しになりがち
📉 コードベース基準を維持負債が次のエージェントに残る
  • 🐛 編集が壊れやすい: 不健全なコードへの AI の編集は欠陥リスクが 30% 以上高い(FORGE 2026 ↗)
  • 🪙 読むコストが増える: Code Health が最も低いコードは入力トークンが 約 45% 増(Java / C++、SCAM 2026 ↗)

Agentic Autofix 📖 Docs

修正案の提示だけでなく、既存の品質負債を修正 PR に変える。

ステップ何が起きるか
🎯 選択Security and quality → Code quality → Standard findings。同じページから 1〜25 件を選択。対象は default branch の CodeQL finding。
🤖 委任Assign to Copilot で cloud agent がブランチ上で修正し、検証して PR を作成。1 件の場合も Generate fix に代わる共通フロー。
👀 レビュー修正内容と CI の結果を確認してマージ。人によるレビューは引き続き必要。
  • 🛂 利用条件: Code Quality を有効化した Team / Enterprise Cloud(data residency を含む)。既存の enterprise ポリシーを継承し、一括修正専用の設定は不要。
  • 💳 コスト: AI credits を消費。委任には Copilot ライセンスも必要。

有効化と展開 📖 Docs

有効化は 3 階層のカスケード

  • 🏛️ Enterprise — Policies → Code quality で Organization の利用を許可
  • 🏢 Organization — Settings → Code quality → Repository access で対象リポジトリを指定
  • 📦 Repository — Settings → Code quality → Enable code quality で scan を有効化

有効化する前に

  • ⚙️ GitHub Actions — 決定論的な CodeQL scan は Actions workflow で動く
  • 🏃 Runner — GitHub-hosted、または想定 label 付きの self-hosted
  • 🧪 カバレッジ — 既存テストの Cobertura XML を upload
  • 🧭 品質ゲート — ruleset は Evaluate mode で始めてからマージブロックへ

🏢 展開状況は Organization 単位でしか確認できない。 dashboard と「Repository access」は Organization スコープで、Enterprise レベルではポリシーの許可リストと消費ライセンスしか見えない。

▼ gh-code-quality-inventory.sh Enterprise slug を渡すだけで全 Organization を巡回し、Code Quality が有効なリポジトリを一覧化 ./gh-code-quality-inventory.sh <enterprise>

GA の利用条件と料金

GitHub Enterprise Cloud と GitHub Team で利用可能。

▸ + でその項目の詳細を展開

コスト計測方法補足
💺 基本ライセンス active committer 1 人あたり月額 $10。有効化された repo に直近 90 日以内に commit が push されると active。
製品モデル

GitHub Advanced Security に含まれない、補完関係にある独立製品。GA 時点では GitHub Enterprise Server は対象外。

カウント方法

有効化した repo 数に関係なく、Organization 全体で 1 人として計上。GitHub App bot は対象外。

🤖 AI 機能 AI 検出と Copilot-powered 機能は GitHub AI credits を消費。
Copilot ライセンス

AI 検出と Autofix には不要。Copilot への修正委任を使う場合のみ Copilot ライセンスが必要。

上限を設定

SKU 単位の予算を設定: Enterprise → Budget → SKU = Code Quality AI credits。

⚙️ 決定論的 scan self-hosted runner を使わない場合、CodeQL workflow が GitHub Actions minutes を消費。
上限を設定

GitHub Actions の予算を設定するか、scan を self-hosted runner に寄せる。

品質を継続的に測定

PR での強制は新しい負債を止める。既存の負債がどこにあるかは dashboard と API でわかる。

  • 📊 Repository / Organization dashboard — リポジトリ横断で reliability と maintainability score を確認し、負債が集中している場所を特定
  • 🧪 PR のカバレッジ — 既存の Cobertura XML を表示し、カバレッジの増減を確認
  • 🔌 API — リポジトリの有効化と finding の取得を自動化し、独自のレポートに活用

🎯 Dashboard で品質負債の場所を把握し、ruleset で新たな負債の追加を止める。

スライド Eng