GitHub:マージがコードスキャンの結果を待っている
ブランチのルールセットは、コードスキャンの結果を求められます(「Require code scanning results」)。リポジトリにコードスキャンが設定されていると、そのブランチへのプルリクは、必須のツールがルールセットの決めた重大度のアラートを見つけている間、必須のツールの解析がまだ終わっていない間、または必須のツールがリポジトリに設定されていない間はマージされません(GitHub の説明「ルールセットで使える規則」と「コードスキャンのマージ保護を設定する」)。従来のブランチの保護にはこの設定が無く、ルールセットの規則 code_scanning です(2026年10月26日に確認)。
GET /repos/OWNER/REPO/rules/branches/BRANCH
[{ "type": "code_scanning", "parameters": { "code_scanning_tools": [
{ "tool": "CodeQL", "alerts_threshold": "errors", "security_alerts_threshold": "high_or_higher" } ] } }]
規則が確かめること
- ツールごとに2つの水準:ルールセットが挙げる各ツールに、「Alerts」(None・Errors・Errors and Warnings・All)と「Security alerts」(None・Critical・High or higher・Medium or higher・All)を決めます。REST API では
alerts_threshold(none・errors・errors_and_warnings・all)とsecurity_alerts_threshold(none・critical・high_or_higher・medium_or_higher・all)で、アラートやセキュリティのアラートを出す結果が、どの水準から参照の更新を止めるかです(GitHub の説明「ルールの REST API」)。 - 両方の結果:この規則があると、コードスキャンが有効で、コミットと更新される参照の両方に結果が無ければなりません。
- 重大度とセキュリティの重大度:コードスキャンのアラートには、どれも Error・Warning・Note のどれかの重大度があります。CodeQL が見つけたセキュリティのアラートには、さらに Critical・High・Medium・Low のセキュリティの重大度があり、それがあるアラートでは、コードスキャンは重大度よりもそちらを表示して使います(GitHub の説明「コードスキャンのアラート」)。
- 規則の読み方:「Get rules for a branch」は、ブランチに当てはまる有効な規則を、どの階層で設定されたものでも全部返します。評価だけのルールセットや無効のルールセットの規則は返しません。
結果がプルリクのどこに出るか
- チェック:どの設定のコードスキャンでも、結果が入るチェックは「Code scanning results」です。解析ツールごとの結果が分けて出て、プルリクが変えた行の新しいアラートは注釈として出ます。既定では、重大度が
error・critical・highの問題が1つでもあるとチェックは失敗します。この水準はリポジトリの設定で変えられます(GitHub の説明「プルリクのコードスキャンのアラートを確かめる」)。 - 結果がプルリクに届く時:コードスキャンをプルリクのチェックとして設定している(既定では既定のブランチへのプルリクだけ)か、push のたびにスキャンして結果を開いているプルリクに対応付けている時に、チェックの結果と注釈として出ます。
- 解析のチェック:CodeQL の解析のワークフローでは、言語ごとに「CodeQL / Analyze (LANGUAGE)」のチェックが、結果のチェックの前に走ります。設定の問題があるときや、解析がコンパイルする言語(たとえば C/C++・C#・Go・Java・Kotlin・Rust・Swift)のビルドをプルリクが壊したときに失敗することがあります。
直す所
- どのツールが止めているか読む:ルールセットにツールと水準があります。「Code scanning results」のチェックでツールごとの結果を見られ、「View all branch alerts」で解析したブランチのアラートを全部見られます。
- 止める水準のアラート:プルリクで直します(push できる人ならだれでも。新しいコミットでチェックが走り直し、直ったアラートは閉じられ、注釈も消えます)。本当の問題でなければ、注釈からアラートを却下します。
- 解析が終わっていない・失敗している:解析のチェックを待つか、失敗した「Analyze」のチェックを Checks のタブで開きます。コンパイルする言語のビルドを壊したプルリクでは、解析が失敗します。
- ツールが設定されていない・結果が無い:必須のツールが、このプルリクと対象のブランチの両方で走るようにします。プルリクのチェックは既定では既定のブランチへのプルリクだけなので、ほかのブランチのルールセットでは、そこでも解析を走らせる必要があります。
- アラートへの会話:ブランチが会話の解決も求めているなら、コードスキャンのアラートへのコメントも数に入ります(マージが会話の解決を待っている)。
IntelliJ IDEA で GitHub のプルリクを見るなら
Lesstep の Pull Request Inbox for GitHub は、JetBrains IDE(2024.1 以降)のプラグインです。プルリクのレビュー・チェック・会話を差分の隣に出し、対象のブランチが許す方法でマージします。GitHub がプルリクを blocked と言うときは、マージの確認に読める物を名指しします(報告の無い必須チェック・まだ要るレビュー・ルールが止めている未解決の会話と署名の無いコミット・最後の push のルール)。チェックの一覧には、コードスキャンのチェックもほかと並んで出ます。ブランチのルールセットがコードスキャンの結果を求めているなら、止まっているプルリクのマージの確認にそう出し、必須のツールと止めるアラートの水準をツールごとに出します。受信箱・差分・会話は無料、承認・コメント・解決・マージは Pro(月 US$1.50・30日間の無料試用つき)です。画面は日本語です。
GitHub は GitHub, Inc. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは GitHub, Inc.・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:GitHub のマージの断り(405・409) · GitHub のレビューの断り(422) · GitHub の検索の 422「Validation Failed」 · 「Resource not accessible by personal access token」 · 401「Bad credentials」 · 「Resource protected by organization SAML enforcement」 · 「API rate limit exceeded」 · GitHub の差分の 406「too_large」・3,000件 · GitHub の行のコメントの 422「must be part of the diff」 · GitHub のブランチの更新の断り(422) · GitHub のプルリクが作れない(422・403) · GitHub の自動マージの断り · GitHub の下書き・レビュー準備完了・閉じるの断り · GitHub の会話の解決の断り · GitHub のチェックが出ない(check runs の 403) · GitHub のファイルの中身が読めない · GitHub の比較の断り(404・422) · GitHub のコメント・返信の断り(ロック・アーカイブの 403) · GitHub のマージの方法の断り(405) · GitHub のブランチが見つからない(404・301) · GitHub Enterprise Server につながらない · GitHub のレビューの依頼が出ない · GitHub のプルリクの一覧が足りない · GitHub の 404・名前を変えたリポジトリ(301・307) · GitHub の行のコメントが outdated・差分に無い · GitHub のプルリクの更新・通知が遅い · GitHub の変更の提案が適用できない · GitHub の必須チェックが Expected のまま · GitHub でコードオーナーのレビューが要る · GitHub で未解決の会話がマージを止める · GitHub で署名の無いコミットがマージを止める · GitHub のマージキューでマージするブランチ · GitHub でマージが最後の push の承認を待っている · GitHub でマージがコード品質の結果を待っている · GitHub でコードのカバレッジの水準がマージを止める · GitHub でライセンスの適合の結果がマージを止める · GitHub でブランチのロックや更新の制限がマージを止める · GitHub でマージの後にブランチが消えない · GitHub でチームの承認(Required reviewers)がマージを止める · GitHub でシークレットスキャンのアラートがマージを止める · GitHub でスタックしたプルリクがマージできない · GitHub で push の規則が push を止める · GitHub でコミットのメタデータの規則がマージを止める · GitHub で強制 push が止められる · GitHub でプルリクをマージしても issue が閉じない · GitHub のプルリクを手元にチェックアウトできない · GitHub のプルリクがマージ先と衝突している · GitHub で変更を依頼された・レビューを取り消す · GitHub で共同作者がコミットに数えられない · GitHub で依存関係のレビューのチェックが失敗する · GitHub で Dependabot がプルリクをリベースしない · GitHub でフォークが同期できない · GitHub でプルリクのベースのブランチを変えられない · GitHub でプルリクを取り消せない · GitHub でプルリクのテンプレートが出ない · GitHub でプルリクにラベルや担当者が付かない · GitHub でプルリクを閉じられない・開き直せない · GitHub でプッシュ保護にプッシュを止められた · GitHub でプルリクのコメントが隠された · GitHub でデプロイが成功するまでプルリクをマージできない · GitHub でチームに頼んだレビューがメンバーに置き換わった · GitHub でプルリクのファイルの Viewed が外れた · GitHub でマージしていないプルリクがマージ済みになった · GitHub で Copilot のレビューが承認に数えられない · GitHub でワークフローが作ったプルリクのチェックが動かない · GitHub でプルリクに Update branch のボタンが出ない · GitHub で Dependabot のプルリクのチェックが失敗する · GitHub でフォークからのプルリクのチェックが失敗する · GitHub でコミットメッセージの [skip ci] でチェックが動かない · GitHub で保存期間を過ぎてチェックが消えた · GitHub の公開リポジトリのコードレビューの制限 · GitHub でリポジトリのプルリクがオフ・制限されている · GitHub でスタックのプルリクごとにチェックが走る · GitHub でスカッシュでマージ済みのコミットが次のプルリクに出る · GitHub のプルリクでファイルの差分が出ない · GitHub でフォークのプルリクのブランチに push できない · GitHub のプルリクのチェックが取り消された · GitHub で Rebase and merge が使えない · GitHub のマージのコミットメッセージが思った形にならない · GitHub のプルリクでファイルの全行が変わったと出る · GitHub の API がタイムアウトした · GitHub のプルリクで画像や文書の差分が見た目で出ない · GitHub のレビューの依頼が断られる(422) · GitHub で Copilot が作ったプルリクのチェックが動かない・承認が数えられない · GitHub の push が GH006・GH013 で断られる · GitHub で承認が足りずマージできない・数に入らない承認 · JetBrains の IDE で GitHub のプルリクを扱う · English