核心概念
プログラムの各プログラムポイントにおける変数と記憶領域の可能な記号的な値を計算する新しい静的プログラム分析手法を提案する。
摘要
本論文では、プログラムの振る舞いを分析する新しい静的分析手法を提案する。この分析手法は、シンボリック表現と抽象的解釈を組み合わせて、プログラムの各プログラムポイントにおける変数と記憶領域の可能な記号的な値を計算する。
具体的には以下の手順で分析を行う:
- 新しい格子構造を定義し、その上で値の流れ分析を行う。格子の高さが無限大のため、特別な widening 演算子を提案する。
- 格子要素と記号的な式を密接に関連付けることで、プログラムの任意の記号的な値を表現できるようにする。
- 関数呼び出しの影響を考慮するため、分析を interprocedural に拡張する。
この分析手法の主な特徴は以下の通り:
- 変数と記憶領域の可能な値を記号的に表現できる
- 抽象的解釈に基づいた静的分析手法であり、プログラムの安全な近似を得ることができる
- 関数呼び出しの影響を考慮した interprocedural な分析が可能
本手法は、プログラムの振る舞いを捉えるのに有用であり、コードの差分分析などへの応用が期待できる。
統計資料
プログラムの各プログラムポイントにおける変数と記憶領域の可能な値は、抽象的な格子要素で表現される。