戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2019年 春期 午前(科目A)48


問題文

ソフトウェアのテストツールの説明のうち、静的テストを支援する静的解析ツールのものはどれか。

選択肢

指定された条件のテストデータや、プログラムの入力ファイルを自動的に生成する。
テストの実行結果を基に、命令の網羅率や分岐の網羅率を自動的に計測し、分析する。
プログラム中に文法上の誤りや論理的な誤りなどがあるかどうかを、ソースコードを分析して調べる。(正解)
モジュールの呼出し回数や実行時間、実行文の実行回数などの、プログラム実行時の動作特性に関するデータを計測する。

🔒 解説は解答すると表示されます

静的解析ツール【午前解説】

正解の理由

選択肢のうち、プログラムを実行せずにソースコードそのものを解析して文法上や論理的な誤りを検出する説明はのみです。静的解析ツールはコンパイル前後の構文チェック、型チェック、データフロー解析、未使用変数・潜在的な例外経路・セキュリティ問題の検出などを行い、実行を伴わない点が特徴です。他の選択肢はテスト実行や実行時データの取得を前提としており、静的解析の定義と合致しません。

解法ステップ

  1. 設問のキーワードを確認:「静的テスト」「ソースコードを分析」などを探す。
  2. 各選択肢で「実行を伴うか」「ソースそのものの解析か」を判別する。
  3. 「実行時のデータを計測」「テストを実行して測定」「入力ファイルを生成」など実行ベースの記述は動的解析に分類する。
  4. ソースコードの静的検査に該当する記述を選ぶ(今回なら)。

選択肢別の誤答解説

  • ア: 指定された条件でテストデータや入力ファイルを自動生成する記述はテストデータ生成ツール(テストケース生成器)であり、静的解析ではありません。
  • イ: 命令網羅率や分岐網羅率を自動計測するのはカバレッジ測定ツールで、実行時にテストを走らせて計測する動的解析系です。
  • : 正解。プログラムを実行せずソースコードを解析して文法や論理的誤りを調べる、典型的な静的解析ツールの説明です。
  • エ: 呼出し回数や実行時間、実行文の実行回数などはプロファイラや実行時の性能計測であり、動的解析に該当します。

よくある誤解

  • 静的解析で実行時の性能問題やメモリ使用量が分かると誤解するケース。これらはプロファイラ等の動的解析が担当します。
  • 静的解析ですべてのバグが見つかると思い込むこと。静的解析は構造的・潜在的問題の発見に有効ですが、ランタイム特有の不具合は検出困難です。
  • コードカバレッジ測定(網羅率)は静的解析だと思う誤り。網羅率はテスト実行中の計測であり動的解析です。

補足コラム

静的解析ツールの具体例には ESLint(JavaScript)、Pylint(Python)、PMD/SpotBugs(Java)、cppcheck(C/C++)、SonarQube(多言語対応)などがあります。CIに統合してコミット時に自動検査することで早期に問題を検出し、品質改善やセキュリティ対策に寄与します。とはいえ、静的解析はデッドコードや潜在的例外経路、型の不整合などを指摘できる一方で、スレッド競合や実行環境特有の不具合、入力依存の振る舞いは動的テストで確認する必要があります。

FAQ

Q1: 静的解析はセキュリティ脆弱性も検出できますか?
A1: 多くの静的解析ツールは典型的な脆弱性パターン(SQLインジェクション、バッファオーバーフロー候補など)を検出できますが、必ずしもすべての脆弱性を網羅するわけではないため動的セキュリティテストと併用が推奨されます。
Q2: コードカバレッジツールは静的解析に含まれますか?
A2: いいえ。カバレッジはテスト実行中に収集する実行情報に基づくため動的解析に分類されます。
Q3: 静的解析の誤検出(false positive)が多いのは本当ですか?
A3: ツールや設定次第ですが、一般に誤検出は存在しうるため、ルール調整やフィルタリング、開発者の判断で対処する必要があります。

関連キーワード: 静的解析、静的テスト、リンター、コード品質、ソースコード解析、カバレッジ測定、プロファイリング、テストデータ生成、CI統合、脆弱性検出
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について