静的解析ツール【static code analysis tool】静的テストツール
静的解析ツールとは?

ソースコードを入力として受け取り、プログラミング言語の仕様に基づいて構造を解析した上で、文法規則に反した記述がないか、あらかじめ定義されたコーディング規約に沿っているかどうかを検証する。コンパイル時に検出される構文エラーだけでなく、未初期化の変数の利用や型の不整合、例外処理の不備といった問題も、実行前の段階で自動的に洗い出すことができる。
文法チェックに留まらず、実行時に配列の範囲外へアクセスする可能性や、NULLポインタの参照、メモリリーク、デッドコードの存在なども検出できる場合がある。制御構造が過度に複雑でないか、重複したコードが存在しないかといった可読性や保守性に関わる点を指摘するものもある。近年では、SQLインジェクションやバッファオーバーフローといった脆弱性につながる記述を検知するものも普及しており、セキュリティ対策の一環として開発工程に組み込まれることも多い。
静的解析ツールを用いた検証手法は「静的解析」(static code analysis)と呼ばれ、プログラムを実行せずに正しさを確かめる「静的テスト」(static testing)の一環に位置付けられる。静的テストには、人間がソースコードを読んで問題点を検討する「レビュー」(review)や「ウォークスルー」(walk-through)なども含まれる。
静的解析ツールはこれらを補助し、人手では見落としやすい問題を効率的に発見するために用いられる。しかし、プログラム実行時の挙動を完全に把握することはできず、また、業務要件との適合性は判断できないため、実際に実行してみる動的テストや人間によるチェックを組み合わせてテスト工程を構成するのが一般的である。
開発の現場では、統合開発環境(IDE)に組み込んでリアルタイムで検証したり、CI/CDパイプラインに組み込んで自動的に実行したりする運用が一般的である。Java向けの「Checkstyle」や「SpotBugs」、JavaScript向けの「ESLint」、Python向けの「Pylint」など言語ごとの専用ツールのほか、複数言語を横断して解析できる「SonarQube」のような汎用ツールも利用される。