
AIに静的解析・Lintの警告を仕分けさせる|優先度のつけ方
久しぶりに静的解析やLintをかけ直したら、警告が数百件。 一覧をスクロールしても終わりが見えず、「これ、全部直すの…?」と、開く前より気が重くなる。そんな朝、ありますよね。
しかも厄介なのは、どれが本当に危なくて、どれが好みの問題なのかが、パッと見では分からないこと。重大なバグの芽と、インデントの揺れが、同じ赤い印で並んでいる。全部直そうとすれば日が暮れるし、放っておけば本当に効く警告が埋もれてしまう。
この記事は、その警告の山をAIに手伝わせて「直す順番」に仕分けるための型をまとめたものです。長く見えますが、全部は要りません。まず「今すぐ/後で/見送る の3つに分けさせる」だけ持ち帰れば、今日から手をつける場所が見えてきます。
30秒のファストパス(最低ライン)
- 3つに仕分ける:警告一覧をAIに渡し、「今すぐ直す/後で直す/今回は見送る」に分類させる
- 理由を一言で:それぞれに「なぜその優先度か」を短く添えさせる(バグにつながる/可読性だけ、など)
- 上から3件だけ着手:「今すぐ」の上位3件から手をつける。全部を今日やろうとしない
※分類はあくまで叩き台。「今すぐ」に入ったものは、本当にそのコードで問題になるか自分の目で最終確認する。
結論:警告の山を前に固まらない鍵は「全部直す」をやめて「順番をつける」に切り替えること。①ツールの出力(ルールID付き)をそのままAIに渡す → ②「今すぐ直す/後で/見送る」の3分類+一言の理由をつけさせる → ③重大度の高い順に並べ替えさせ、上位数件から着手 → ④「今すぐ」判定だけは、実際にそのコードで問題になるかを自分で確かめてから直す。AIは仕分けの速さを、あなたは最終判断を受け持つ——この分担で、警告の山は「今日やる小さなリスト」に変わります。
Lintの警告をゼロにすることが目的ではありません。限られた時間で、効く順に潰していく。その順番づけの手間を、AIに肩代わりさせる話です。
何が起きているか——なぜ警告の山で手が止まるのか
ツールが悪いわけでも、警告を放置してきたあなたが悪いわけでもありません。警告は、重要度がフラットに並ぶという構造的な事情があります。ここを押さえると、どこをAIに任せればいいかが見えてきます。
- 重大度が横並びに見える:本当に危ない指摘も、スタイルの好みも、同じ「警告」として一覧に並ぶ。目で優先度を判断するのは、件数が多いほどしんどい
- 件数が多いと判断が止まる:数百件あると「どれから」を決めるだけで消耗する。決めきれず、結局スクロールして閉じてしまう
- ルールの意味が分かりにくい:
no-unused-varsくらいなら想像がつくけれど、聞き慣れないルールIDだと「これ何を怒ってるの」で調べる手間が乗る - プロジェクトの事情が反映されない:ツールは「このコードは移行途中」「ここは外部入力を受ける」といった文脈を知らない。だから機械的に全部を等価に鳴らす
裏を返せば——意味の解説と、ざっくりした重大度づけは、AIがいちばん得意な作業です。そこを任せて、あなたは「このプロジェクトではどうか」の最終判断に集中する。順に見ていきます。
手順1:ツールの出力を、ルールID付きのまま渡す
まず、AIに渡す材料を用意します。といっても難しくありません。Lintや静的解析の出力を、加工せずそのままコピーするだけです。
このとき大事なのは、ルールID(no-explicit-any、S1192 のような識別子)を落とさないこと。ルールIDがあると、AIは「その警告が何を問題視しているか」を正確に読み取れます。逆に、メッセージだけを抜き出して整形してしまうと、判断の手がかりが減ります。
- 出力が長すぎるときは、ファイル単位・ディレクトリ単位で区切って渡す(一度に全部は詰め込みすぎ)
- 同じルールが何百件も出ているなら、「このルールは何件出ている」と件数を添えるだけでも、まとめて扱えて速い
- 可能なら、そのファイルが何をするものかを一言添える(「外部APIのレスポンスを扱う変換処理」など)。文脈があるほど仕分けの精度が上がる
一度に渡す量を欲張らないのがコツです。渡す前提や制約の整え方そのものはAIにコードを書かせる前に渡す前提・制約の伝え方も参考になります。
手順2:「今すぐ/後で/見送る」の3つに仕分けさせる

材料がそろったら、AIに仕分けを頼みます。ポイントは、細かい分類にしないこと。多くても3段階に絞ると、そのまま行動に移せます。
そのまま使える頼み方の例です。
次のLint/静的解析の警告一覧を、対応の優先度で3つに仕分けてください。
- 今すぐ直す:バグや不具合、セキュリティ上の問題につながりうるもの
- 後で直す:品質・保守性に効くが、今すぐ壊れるわけではないもの
- 今回は見送る:スタイルや好みの範囲で、機能への影響が小さいもの
各項目に、そう判断した理由を一言添えてください。判断に迷うものは「要確認」として、なぜ迷うかも書いてください。
この「理由を一言」が効きます。理由が読めれば、AIの分類が的外れなときにすぐ気づけますし、あなたが最終判断するときの手がかりにもなります。「今すぐ」に入ったのに理由が「可読性のため」だったら、それは分類がずれているサイン。
分類の粒度はプロジェクトに合わせて調整して構いません。ただ、箱を増やしすぎると仕分けの意味が薄れるので、まずは3つで十分です。指摘をどう取捨選択するかの判断軸はAIレビューの指摘を取捨選択する判断軸も地続きの話です。
手順3:重大度の高い順に並べ替えて、上から着手する
3つに分かれたら、次は「今すぐ直す」の中を、さらに重大度順に並べ替えてもらいます。
「今すぐ直す」に分類したものを、影響の大きい順に並べ替えてください。それぞれ、放置するとどんな不具合が起こりうるかを一行で書いてください。
こうすると、限られた時間で「どこから手をつければいちばん効くか」が一列に並びます。あとは、上から数件だけ着手する。全部を今日やろうとしないのが、続けるコツです。
- 「後で直す」は、別リストに退避しておく(イシューやTODOに落とす)。今日やらない代わりに、忘れない場所へ
- 「見送る」は、ルールごと設定を見直す候補。同じ好みの警告が何百件も出るなら、そのルールをプロジェクトとして「鳴らさない」と決めるのも立派な判断
- 一度に直すのは、小さいスコープで。まとめて大量修正すると差分が追えなくなる。関数1個から広げる考え方は関数1個から始めるAIコーディングの安全なスコープ設計へ
手順4:「今すぐ」判定だけは、自分の目で最終確認する
ここが、丸投げにしないための肝です。AIが「今すぐ直す」に入れたものは、本当にこのコードで問題になるかを、直す前に自分で確かめます。
理由は2つあります。ひとつは、AIは実行時の文脈を知らないこと。「nullになりうる」と警告が出ていても、その変数が実際にはnullにならない前提で動いている場合がある。もうひとつは、AIがもっともらしく重大度を盛ることがあること。実害の小さい警告を、深刻そうに説明してしまうケースです。
確認は、身構えなくて大丈夫。「この警告が指す箇所は、実際にどんな入力・状態で問題になる?」とAIに聞き返し、その筋書きが自分のコードで本当に起こりうるかを照らすだけです。起こりえないなら、優先度を下げるか「見送る」に回す。ここでAIの説明を鵜呑みにしないための見方はAIのハルシネーション(もっともらしい誤り)の見抜き方にまとめています。
セキュリティ寄りの警告は特に、実際に悪用されうる経路があるかまで見ておくと安心です。詳しくはAI生成コードのセキュリティ確認も合わせてどうぞ。
手順5:直したら、差分を小さく確認して閉じる
仕分けて、上から直したら、最後は差分の確認です。警告を消すつもりの修正が、別の挙動を変えてしまっていないかを見ます。
- 1回の修正は小さく:ルール単位・ファイル単位で区切ってコミットすると、後から追いやすい
- 「警告が消えたか」と「挙動が変わっていないか」は別:警告が消えても、直し方によっては意味が変わることがある。差分に目を通す
- 自動修正(
--fixのような一括整形)を使うときも、一度に全ファイルではなく範囲を絞ってかける
差分レビューの目の付けどころはリファクタリングをAIに任せるときの差分の確認方法が参考になります。
具体例:数百件の警告を朝イチで仕分ける
たとえば、久しぶりのLintで420件の警告が出たとします。まず全部を眺めて絶望する——のではなく、こう進めます。
- 同じルールでまとめる:内訳を見ると、
未使用のインポートが180件、any型の使用が90件、nullの可能性が40件、残りがスタイル系。まず「ルールごとに何件か」をAIに数えさせるだけで、山の正体が見える - ルール単位で優先度を決める:
未使用のインポートは機械的に消せる(後で/自動修正)。nullの可能性はバグの芽になりうる(今すぐ候補)。スタイル系は今回見送り、と大枠を先に決める - 「今すぐ」だけ個別に見る:
nullの可能性の40件を、AIに影響順で並べ替えさせ、上位から実際にnullが来る経路があるか確認して直す - 見送り分は設定を見直す:スタイル系が毎回大量に出るなら、そのルールをプロジェクトの方針として調整する候補に
420件を1件ずつ見るのではなく、「ルールの塊」で大きく振り分けてから、危ない塊だけ個別に見る。これだけで、朝の30分が「絶望」から「前進」に変わります。
ありがちな落とし穴
- 全部を今日直そうとする:数百件を一気に片付けようとして消耗し、結局手つかずで終わる
- AIの「今すぐ」を無条件に信じる:実際には問題にならない箇所まで、慌てて直してしまう
- 理由を添えさせない:分類だけ受け取ると、ずれていても気づけない
- 自動修正を全体に一発でかける:差分が膨大になり、意図しない変化が紛れても追えなくなる
- 見送り分を捨てっぱなし:本当は設定で消せる好みの警告を、毎回スクロールで飛ばし続ける
- ルールIDを削って渡す:メッセージだけにすると、AIが何を問題視しているか読み取りづらくなる
- 重大な塊を後回しにする:件数の多いスタイル系につられて、少数だが危ない警告を見逃す
明日からやること(小さく始める3つ)
- Lint/静的解析の出力を、ルールIDごとAIに渡す(整形しない、そのまま)
- 「今すぐ/後で/見送る」の3つに、理由を一言添えて仕分けさせる
- 「今すぐ」の上位3件だけ、本当に問題になるか自分で確かめてから直す
この3つだけでも、「警告の山を見て閉じる」から「今日の小さなリストを潰す」に変わります。慣れたら、ルール単位の設定見直しや自動修正の範囲づけを足していけば十分です。
AI警告仕分けのチェックリスト
「関係する所だけ見る」が前提です。全部に○は要りません。いま向き合っている警告に関わる所だけ、さっと確認します。
渡す前
- ルールID付きの出力を、加工せず用意したか
- 量が多いなら、ファイル・ディレクトリ単位で区切ったか
- 同じルールの大量発生は、件数をまとめて添えたか
- そのコードが何をするものか、一言の文脈を渡せたか
仕分けさせる
- 「今すぐ/後で/見送る」の3分類に絞ったか
- 各項目に「そう判断した理由」を一言つけさせたか
- 「今すぐ」の中を、影響の大きい順に並べ替えさせたか
- 迷うものは「要確認」として理由を書かせたか
直す前の最終確認
- 「今すぐ」判定が、実際にこのコードで問題になるか自分で確かめたか
- AIが重大度を盛っていないか、起こりうる経路を照らしたか
- セキュリティ寄りの警告は、悪用経路の有無まで見たか
直したあと
- 修正はルール・ファイル単位で小さく区切ったか
- 警告が消えただけでなく、挙動が変わっていないか差分を見たか
- 「後で」「見送る」を、別リストや設定見直しへ退避したか
最後に
数百件の警告を前に、開く気が失せる。その感覚は、あなたの怠慢ではありません。重要度がフラットに並んだ山は、誰が見ても手が止まるもの。むしろ、放置せずもう一度かけ直したこと自体が、丁寧な仕事の証です。
全部を今日直す必要はありません。順番をつけて、効く数件から潰す。その順番づけの手間だけ、AIに肩代わりさせればいい。仕分けの速さはAIに、「このプロジェクトでは本当に危ないか」の最終判断はあなたに。役割を分ければ、山は今日やる小さなリストに変わります。
AIは、警告の山を意味ごとに整理してくれる頼れる相棒です。どれを今すぐ直すと決める最後の一手は、コードの事情を知っているあなたの側で。

今日ひとつ、「警告は全部直さず、3つに仕分けてから上位だけ着手する」を決められたなら、それはもう、"山を見て閉じる"を"順番に潰す"に変える確かな一歩です。
よければ、こちらも
- 指摘をどう取捨選択するかの判断軸はAIレビューの指摘を取捨選択する判断軸へ。
- 直したあとの差分の見方はリファクタリングをAIに任せるときの差分の確認方法へ。
- コードレビューの一次チェックをどこまで任せるかはコードレビューの一次チェックをAIに任せる範囲と注意点へ。