プリプロセッサディレクティブを含むプログラムを対象としたリファクタリング支援

吉田 正和 (0151122)


ソフトウェアの外部的な振舞いを変化させないプログラム書き換えによって, ソフトウェアの内部構造を改善するというリファクタリングは, ソフトウェア開発・保守の重要な手法の一つとなっている. 現実のソフトウェア開発にリファクタリングを適用する場合には, 手作業によるエラーの混入を避けるために, プログラム解析にもとづく リファクタリング自動化ツールの支援が必須である. ところが,C言語プログラムのように, プリプロセッサディレクティブを含むプログラムでは, プログラマが見ているプリプロセッシング前のソースプログラムと, プログラム解析の対象である プリプロセッシング後のソースプログラムの テキスト表現が異なるという問題があるため, そのようなリファクタリング支援ツールがまだ実現されていない. 本研究では, プリプロセッシング前のソースプログラムの表現と プリプロセッシング後のソースプログラムの表現, および, プログラム解析のための抽象構文木の表現の 三者の対応づけを行うプログラム表現モデルを提案する. そして,このモデルを用いて, プリプロセッサディレクティブを含むプログラムの リファクタリング自動化を実現する手法について述べる.