静的解析ツールが吐き出した数百件の警告リストを前に、どこから手をつけるか少し途方に暮れつつも、落ち着いて仕分けようと画面に向かっている開発者

AIに静的解析・Lintの警告を仕分けさせる|優先度のつけ方

久しぶりに静的解析やLintをかけ直したら、警告が数百件。 一覧をスクロールしても終わりが見えず、「これ、全部直すの…?」と、開く前より気が重くなる。そんな朝、ありますよね。

しかも厄介なのは、どれが本当に危なくて、どれが好みの問題なのかが、パッと見では分からないこと。重大なバグの芽と、インデントの揺れが、同じ赤い印で並んでいる。全部直そうとすれば日が暮れるし、放っておけば本当に効く警告が埋もれてしまう。

この記事は、その警告の山をAIに手伝わせて「直す順番」に仕分けるための型をまとめたものです。長く見えますが、全部は要りません。まず「今すぐ/後で/見送る の3つに分けさせる」だけ持ち帰れば、今日から手をつける場所が見えてきます。

30秒のファストパス(最低ライン)
- 3つに仕分ける:警告一覧をAIに渡し、「今すぐ直す/後で直す/今回は見送る」に分類させる
- 理由を一言で:それぞれに「なぜその優先度か」を短く添えさせる(バグにつながる/可読性だけ、など)
- 上から3件だけ着手:「今すぐ」の上位3件から手をつける。全部を今日やろうとしない
※分類はあくまで叩き台。「今すぐ」に入ったものは、本当にそのコードで問題になるか自分の目で最終確認する。
結論:警告の山を前に固まらない鍵は「全部直す」をやめて「順番をつける」に切り替えること。①ツールの出力(ルールID付き)をそのままAIに渡す → ②「今すぐ直す/後で/見送る」の3分類+一言の理由をつけさせる → ③重大度の高い順に並べ替えさせ、上位数件から着手 → ④「今すぐ」判定だけは、実際にそのコードで問題になるかを自分で確かめてから直す。AIは仕分けの速さを、あなたは最終判断を受け持つ——この分担で、警告の山は「今日やる小さなリスト」に変わります。

Lintの警告をゼロにすることが目的ではありません。限られた時間で、効く順に潰していく。その順番づけの手間を、AIに肩代わりさせる話です。

何が起きているか——なぜ警告の山で手が止まるのか

ツールが悪いわけでも、警告を放置してきたあなたが悪いわけでもありません。警告は、重要度がフラットに並ぶという構造的な事情があります。ここを押さえると、どこをAIに任せればいいかが見えてきます。

裏を返せば——意味の解説と、ざっくりした重大度づけは、AIがいちばん得意な作業です。そこを任せて、あなたは「このプロジェクトではどうか」の最終判断に集中する。順に見ていきます。

手順1:ツールの出力を、ルールID付きのまま渡す

まず、AIに渡す材料を用意します。といっても難しくありません。Lintや静的解析の出力を、加工せずそのままコピーするだけです。

このとき大事なのは、ルールID(no-explicit-anyS1192 のような識別子)を落とさないこと。ルールIDがあると、AIは「その警告が何を問題視しているか」を正確に読み取れます。逆に、メッセージだけを抜き出して整形してしまうと、判断の手がかりが減ります。

一度に渡す量を欲張らないのがコツです。渡す前提や制約の整え方そのものはAIにコードを書かせる前に渡す前提・制約の伝え方も参考になります。

手順2:「今すぐ/後で/見送る」の3つに仕分けさせる

数百件の警告リストを、今すぐ直す・後で直す・今回は見送る の3つの箱に振り分けていく様子を示した概念図

材料がそろったら、AIに仕分けを頼みます。ポイントは、細かい分類にしないこと。多くても3段階に絞ると、そのまま行動に移せます。

そのまま使える頼み方の例です。

次のLint/静的解析の警告一覧を、対応の優先度で3つに仕分けてください。
- 今すぐ直す:バグや不具合、セキュリティ上の問題につながりうるもの
- 後で直す:品質・保守性に効くが、今すぐ壊れるわけではないもの
- 今回は見送る:スタイルや好みの範囲で、機能への影響が小さいもの

各項目に、そう判断した理由を一言添えてください。判断に迷うものは「要確認」として、なぜ迷うかも書いてください。

この「理由を一言」が効きます。理由が読めれば、AIの分類が的外れなときにすぐ気づけますし、あなたが最終判断するときの手がかりにもなります。「今すぐ」に入ったのに理由が「可読性のため」だったら、それは分類がずれているサイン。

分類の粒度はプロジェクトに合わせて調整して構いません。ただ、箱を増やしすぎると仕分けの意味が薄れるので、まずは3つで十分です。指摘をどう取捨選択するかの判断軸はAIレビューの指摘を取捨選択する判断軸も地続きの話です。

手順3:重大度の高い順に並べ替えて、上から着手する

3つに分かれたら、次は「今すぐ直す」の中を、さらに重大度順に並べ替えてもらいます。

「今すぐ直す」に分類したものを、影響の大きい順に並べ替えてください。それぞれ、放置するとどんな不具合が起こりうるかを一行で書いてください。

こうすると、限られた時間で「どこから手をつければいちばん効くか」が一列に並びます。あとは、上から数件だけ着手する。全部を今日やろうとしないのが、続けるコツです。

手順4:「今すぐ」判定だけは、自分の目で最終確認する

ここが、丸投げにしないための肝です。AIが「今すぐ直す」に入れたものは、本当にこのコードで問題になるかを、直す前に自分で確かめます。

理由は2つあります。ひとつは、AIは実行時の文脈を知らないこと。「nullになりうる」と警告が出ていても、その変数が実際にはnullにならない前提で動いている場合がある。もうひとつは、AIがもっともらしく重大度を盛ることがあること。実害の小さい警告を、深刻そうに説明してしまうケースです。

確認は、身構えなくて大丈夫。「この警告が指す箇所は、実際にどんな入力・状態で問題になる?」とAIに聞き返し、その筋書きが自分のコードで本当に起こりうるかを照らすだけです。起こりえないなら、優先度を下げるか「見送る」に回す。ここでAIの説明を鵜呑みにしないための見方はAIのハルシネーション(もっともらしい誤り)の見抜き方にまとめています。

セキュリティ寄りの警告は特に、実際に悪用されうる経路があるかまで見ておくと安心です。詳しくはAI生成コードのセキュリティ確認も合わせてどうぞ。

手順5:直したら、差分を小さく確認して閉じる

仕分けて、上から直したら、最後は差分の確認です。警告を消すつもりの修正が、別の挙動を変えてしまっていないかを見ます。

差分レビューの目の付けどころはリファクタリングをAIに任せるときの差分の確認方法が参考になります。

具体例:数百件の警告を朝イチで仕分ける

たとえば、久しぶりのLintで420件の警告が出たとします。まず全部を眺めて絶望する——のではなく、こう進めます。

420件を1件ずつ見るのではなく、「ルールの塊」で大きく振り分けてから、危ない塊だけ個別に見る。これだけで、朝の30分が「絶望」から「前進」に変わります。

ありがちな落とし穴

明日からやること(小さく始める3つ)

  1. Lint/静的解析の出力を、ルールIDごとAIに渡す(整形しない、そのまま)
  2. 今すぐ/後で/見送る」の3つに、理由を一言添えて仕分けさせる
  3. 「今すぐ」の上位3件だけ、本当に問題になるか自分で確かめてから直す

この3つだけでも、「警告の山を見て閉じる」から「今日の小さなリストを潰す」に変わります。慣れたら、ルール単位の設定見直しや自動修正の範囲づけを足していけば十分です。

AI警告仕分けのチェックリスト

「関係する所だけ見る」が前提です。全部に○は要りません。いま向き合っている警告に関わる所だけ、さっと確認します。

渡す前

仕分けさせる

直す前の最終確認

直したあと

最後に

数百件の警告を前に、開く気が失せる。その感覚は、あなたの怠慢ではありません。重要度がフラットに並んだ山は、誰が見ても手が止まるもの。むしろ、放置せずもう一度かけ直したこと自体が、丁寧な仕事の証です。

全部を今日直す必要はありません。順番をつけて、効く数件から潰す。その順番づけの手間だけ、AIに肩代わりさせればいい。仕分けの速さはAIに、「このプロジェクトでは本当に危ないか」の最終判断はあなたに。役割を分ければ、山は今日やる小さなリストに変わります。

AIは、警告の山を意味ごとに整理してくれる頼れる相棒です。どれを今すぐ直すと決める最後の一手は、コードの事情を知っているあなたの側で。

警告の仕分けを終えて、今日直す数件だけに絞り込めたことで表情がやわらぎ、落ち着いて修正に取りかかろうとしている開発者

今日ひとつ、「警告は全部直さず、3つに仕分けてから上位だけ着手する」を決められたなら、それはもう、"山を見て閉じる"を"順番に潰す"に変える確かな一歩です。

よければ、こちらも