◀ 用語一覧
NO.19.6

🩺 Code Quality

更新: 2026.09.11

一言で

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

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

Code Quality がカバーする範囲

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 をアップロードするサードパーティツール。

可視化

可視化

finding は 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 は長期的なコードの健全性を守る。

マージ前に修正

品質負債を直す最適なタイミングは、PR の文脈がまだ新鮮な間。GitHub 社内では、Code Quality finding の 67.3% を PR のマージ前に解消 している。

  1. 先に基準を決める — ruleset の品質ゲートを設定し、基準を下回る変更をマージできないようにする。
  2. PR を開く — ルールベース解析と AI 解析が走り、説明と修正提案付きの finding がインラインに表示される。
  3. 解消する — Autofix の適用、理由付き dismiss、または Copilot への修正委任を選択。
  4. ゲートが効く — 必要な finding が解消されるまで PR はブロックされたまま。
  5. 🎁 おまけ — Security タブから直接アラートを修正、または campaign を作ってバックログを整理された形で消化。

⚡ PR 内で解消すれば、後日修正専用の PR を作らずに済み、default branch のバックログも増えない。

有効化と展開 📖 Docs

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

  • 🏛️ EnterprisePolicies → Code quality で Organization の利用を許可
  • 🏢 OrganizationSettings → Code quality → Repository access で対象リポジトリを指定
  • 📦 RepositorySettings → 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 CloudGitHub 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 で新たな負債の追加を止める。