静的解析とコーディング規約とは?
静的解析とコーディング規約とは、プログラムを実行せずにソースコードを解析し、規約違反・未使用変数・null参照の可能性・脆弱性パターンなどを検出する手法。コーディング規約はその判定基準となる書き方の取り決めで、可読性と保守性を担保し欠陥の作り込みを予防する。機械が拾える指摘を自動化することで、レビューを人にしかできない設計論議へ集中させる狙いもある。
基本情報技術者試験の過去問では7回出題されています(2016年度〜2026年度)。
せいてきかいせきとこーでぃんぐきやく
静的解析とコーディング規約の意味
プログラムを実行せずにソースコードを解析し、規約違反・未使用変数・null参照の可能性・脆弱性パターンなどを検出する手法。コーディング規約はその判定基準となる書き方の取り決めで、可読性と保守性を担保し欠陥の作り込みを予防する。機械が拾える指摘を自動化することで、レビューを人にしかできない設計論議へ集中させる狙いもある。
静的解析とコーディング規約の具体例
CIのビルド時に静的解析を必須ゲートにし、規約違反があればマージを止める運用にすると、レビューで人が指摘する量が減り、議論を設計の妥当性へ集中させられる。SQL文の文字列連結の検出など、脆弱性の予防にも効く。
静的解析とコーディング規約は試験でどう引っ掛けられる?
静的解析は実行時の入力に依存する欠陥(性能問題、競合状態の一部)は見つけられず、動的テストの代替にはならない。また検出結果には偽陽性が混じるため、誤検出が多い設定のまま運用したり全件をゼロにする運用を強いたりすると、指摘が無視されゲートが形骸化する。抑制コメントの使用ルールまで決めておくのが実務。
静的解析とコーディング規約と関連する用語
静的解析とコーディング規約が出た過去問
静的テストツールの機能に分類されるものはどれか。
正解:ソースコードを解析して,プログラムの誤りを検出する。
要点:静的テストは実行せずソースを解析、動的テストは動かして調べる
テストツールは、プログラムを実行せずに調べる静的なものと、実際に動かして調べる動的なものに分かれる。静的テストツールはソースコードそのものを解析対象とし、構文上の誤りや未使用変数、コーディング規約違反などを実行前に検出する。実行経路の網羅度測定やテストデータ・ドライバの生成は、プログラムを動かすことを前提とした動的な支援機能である。
出典:平成28年度 春期 基本情報技術者試験 午前 問21(IPA)プログラムのコーディング規約に規定する事項のうち,適切なものはどれか。
正解:領域割付け関数を使用するときは,割付けができなかったときの処理を記述する。
要点:動的確保は失敗時の処理を書かせるのが規約の定石
コーディング規約は可読性と信頼性を高めるために定める。動的な領域確保は失敗しうるので、確保できなかった場合の処理を必ず書かせることは、異常時の暴走を防ぐ妥当な規定である。
出典:平成30年度 秋期 基本情報技術者試験 午前 問7(IPA)マルウェアの動的解析に該当するものはどれか。
正解:検体をサンドボックス上で実行し、その動作や外部との通信を観測する。
要点:動的解析は検体を隔離環境で実行し挙動を観測すること
動的解析とは、検体を実際に実行させてその挙動を観測する手法である。安全に実行するために隔離環境(サンドボックス)を用い、ファイル操作やレジストリ変更、外部への通信などを記録する。これに対し、実行せずにコードや特徴を調べる手法は静的解析と呼ばれ、ハッシュ値照合や逆アセンブル・逆コンパイルによる解析が該当する。
出典:令和1年度 秋期 基本情報技術者試験 午前 問36(IPA)ソフトウェアのテストツールの説明のうち、静的テストを支援する静的解析ツールのものはどれか。
正解:プログラム中に文法上の誤りや論理的な誤りなどがあるかどうかを、ソースコードを分析して調べる。
要点:静的解析は実行せずにソースコードから欠陥を見つける
静的解析ツールは、プログラムを実行せずにソースコードを解析して、文法上の誤りやコーディング規約違反、初期化されていない変数などの問題を指摘する。実行を伴わない点が特徴で、早い段階で欠陥を見つけられる。テストデータの生成、網羅率の計測、実行時の性能測定はいずれも実行を前提とした動的なツールである。
出典:令和1年度 春期 基本情報技術者試験 午前 問48(IPA)プログラムのコーディング規約に規定する事項のうち、適切なものはどれか。
正解:領域割付け関数を使用するときは、割付けができなかったときの処理を記述する。
要点:動的な領域確保は失敗しうる。失敗時処理の記述を規約化する
コーディング規約は、可読性・保守性・障害耐性を高めるために定める。動的に領域を確保する関数は確保に失敗して無効な値を返すことがあり、それを使うと異常終了につながるため、失敗時の処理を必ず書くことが求められる。変数の使い回しや浮動小数点数によるループ制御、不要な再帰は、いずれも可読性や正確性・性能を損なう。
出典:令和4年度 s 基本情報技術者試験 kamokuA 問9(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。