静的プログラム解析
静的コード解析 (static code analysis) または静的プログラム解析 (static program analysis)とは、コンピュータのソフトウェアの解析手法の一種であり、実行ファイルを実行することなく解析を行うこと。逆にソフトウェアを実行して行う解析を動的プログラム解析と呼ぶ。静的コード解析はソースコードに対して行われることが多く、少数ながらオブジェクトコードに対して行う場合もある。
ツールが行う静的コード解析の洗練度は、個々の文や宣言だけを検証するものから、プログラム全体を解析するものまで様々である。解析結果の利用も様々で、Lintのように単に指摘するだけのものから、形式手法を使ってそのプログラムの特性を数学的に証明する(仕様記述と振る舞いが一致しているかどうかを検証する)ものまである。
ソフトウェア測定法やリバースエンジニアリングも静的解析の一部とみなすこともある。特に組み込みシステムの開発において、ソフトウェア測定法と静的コード解析が品質向上の一助として活用されることが多くなっている。
静的解析の商業利用が増えているのは、重要なコンピュータシステムで使用されるソフトウェアの検証や潜在的なセキュリティホールを検出する必要性が増大したことを意味する。以下のような分野で、複雑さを増していくソフトウェアの品質向上に静的コード解析が使われている。
- 医療用ソフトウェア – アメリカ食品医薬品局 (FDA) は医療機器で静的コード解析が活用されているとしている。
- 原子力関連のソフトウェア – イギリスの Health and Safety Executive は原子炉保護系での静的コード解析の活用を推奨している。
VDC Research が行った調査(2012年)によれば、組み込みシステムのソフトウェア技術者の28.7%が静的コード解析ツールを既に使っており、39.7%が2年以内に使いたいと答えた。
アプリケーションのセキュリティの分野では Static Application Security Testing (SAST) という用語が使われている。
[参考:Wikipedia]
キーワード関連:動的プログラム解析、ソフトウェア測定法、リバースエンジニアリング