用語集 最終更新 2026.08.08

静的解析

静的解析は、コードを実行せずに文法や型、危ない書き方をチェックする仕組みです。 lint、型チェック、セキュリティチェックなどが同じ文脈で出てきますが、見ているものはそれぞれ違います。

3つの層を分けて考える

  • lint(書き方の検査):未使用変数、命名、フォーマットなど。読みやすさと事故予防
  • 型チェック:TypeScript のように、値の種類が噛み合っているかを検査する
  • SAST(セキュリティ静的解析):SQLインジェクション や XSS につながる書き方を探す

「静的解析を入れた」と言うとき、この3つのどれを指しているのかで効果がまったく違います。導入の相談では最初にここを揃えると話が早いです。

既存プロジェクトへ入れるときの罠

いちばんよくある失敗は、いきなり全ファイルに厳しいルールを適用して数千件の警告を出し、誰も見なくなることです。警告が多すぎる状態は、警告がゼロの状態より危険で、本当に効く指摘が埋もれます。 現実的な入れ方は次の順です。

  1. まず既存の指摘を「ベースライン」として除外し、警告ゼロの状態を作る
  2. 新規・変更したコードにだけルールを適用する
  3. 落ち着いてから、ベースラインを少しずつ削っていく

押さえておきたい注意点

静的解析が通っても、仕様違いや設計ミスは普通に残ります。「型が合っている」ことと「業務ルールとして正しい」ことは別問題です。 たとえば消費税の計算式が間違っていても、数値どうしの計算である限り静的解析は何も言いません。ここはテストとレビューの担当範囲です。

偽陽性とどう付き合うか

静的解析は「怪しい形」を見つける仕組みなので、実際には問題ない箇所も指摘します。ここで安易に全体のルールを切ると、本来拾いたかった指摘まで消えます。抑制は行単位・ルール単位に限定し、なぜ抑制したのかをコメントに残すのが基本です。抑制コメントだけが増えて理由が残っていないコードは、数か月後に誰も触れなくなります。

実務で見るポイント

  • AI が書いたコードは、まず静的解析に通してから読むと粗い崩れを先に落とせる
  • CI で回すなら、失敗させるルールと警告にとどめるルールを分ける
  • 「何を見ていないか」を理解して使う。通過は品質の証明ではない
  • ツール選定はBiome とは何か?も参考になります