読み方 : せいてきかいせきツール

静的解析ツール【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」のような汎用ツールも利用される。

資格試験などの「静的解析ツール」の出題履歴

▼ 基本情報技術者試験
令7修1 問14】 静的テストツールの機能に分類されるものはどれか。
令6修7 問37】 ソフトウェアのテストツールの説明のうち,静的テストを支援する静的解析ツールのものはどれか。
令4修6 問46】 ソフトウェアのテストツールの説明のうち,静的テストを支援する静的解析ツールのものはどれか。
令2修7 問47】 ソフトウェアのテストツールの説明のうち,静的テストを支援する静的解析ツールのものはどれか。
令1修6 問20】 静的テストツールの機能に分類されるものはどれか。
平31春 問48】 ソフトウェアのテストツールの説明のうち,静的テストを支援する静的解析ツールのものはどれか。
平29修12 問20】 静的テストツールの機能に分類されるものはどれか。
平28春 問21】 静的テストツールの機能に分類されるものはどれか。
平26春 問19】 静的テストツールの機能に分類されるものはどれか。
平23秋 問23】 静的テストツールの機能に分類されるものはどれか。
平22秋 問23】 プログラムの静的解析ツールで検出できるものはどれか。
この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。