【せいてきかいせき】
静的解析 とは?
最終更新:
💡 「動かす前」に問題の候補を見つける
プログラムを実行せずにソースコードを解析して、バグにつながりやすい書き方やセキュリティ上の問題、コーディング規約違反などの候補を見つける手法。
📌 このページのポイント
リンターと何が違うの?
具体的にどんな問題が見つかる?
null参照の可能性、使われていない変数、到達しないコード、閉じ忘れたファイル、ハードコードされたパスワード、入力値がそのままSQLに入る流れなどだね。OWASPは、SQLインジェクションのような種類はツールで見つけやすいと説明しているよ
じゃあ静的解析を通ればバグはないってこと?
誤検知が多いと面倒そう…
そこが運用のポイントだよ。指摘が多すぎると、みんなが警告を読まなくなる。プロジェクトに合わないルールを外したり、確認済みの箇所に理由を書いて抑制したりして、重要な指摘が埋もれないようにするんだ
どんなツールがあるの?
JavaScriptならESLintのように、言語ごとに定番のツールがあるよ。複数の言語をまとめて解析して結果を管理するSonarQubeのようなプラットフォームもある。まずは使っている言語のツールをCIで動かして、指摘の量を見ながらルールを調整するところから始めるといいね
まとめ:ざっくりこれだけ覚えればOK!
「静的解析」って出てきたら「コードを実行せずに問題の候補を探す分析」と思えればだいたいOK!
📖 おまけ:英語の意味
「Static Analysis」 = 静的解析
💬 Static(静的=実行しない)Analysis(分析)。対になるのはDynamic Analysis(動的解析=実行して分析)だよ