著者
会沢 実 練 林 飯田 元 井上 克郎 鳥居 宏次
雑誌
全国大会講演論文集
巻号頁・発行日
vol.48, pp.111-112, 1994-03-07
被引用文献数
1

大規模なソフトウェアのソースプログラムは,開発,保守のそれぞれの過程を通じて頻繁に変更を加えられる.変更されたプログラムの履歴からバグの作り込まれた時間の特定などの解析を行なう際,バージョン間の差分を求めるツールは非常に有用なものである.開発者は,プログラムテキスト間の差分を基にどの部分に変更が加えられたかを知ることができる.このようなプログラムの差分を求めるツールとしては,UNIXのdiffなどが広く用いられている.diffでは行単位のストリング比較を基にして差分を求めている.しかし,Cのプログラムのようにブロック構造を持つテキストの差分を求める場合,ネストの深さの変化や制御の流れの違いなども開発者にとっては重要な情報である.diffの差分の計算方法では,このようなプログラムの構造に関わる変化の有無をとらえることは困難である.本研究では,構文木の比較を基にしたプログラムテキスト比較ツール(progdiff)の試作を行なった.progdiffでは,ユーザがプログラムの階層構造の変化を容易に把握できるよう,表示方法についても工夫している.progdiffの入力は,C言語で記述されたプログラムテキストであるprogdiffは主に次の3つの部分から構成される.(1)入力された2つのCプログラムからそれぞれに対応する構文木を生成する.(2)木の比較アルゴリズムを利用して2つの構文木の各頂点の最大の対応を求める.(3)対応のとれていない頂点を両者の差分として,プログラムテキストの形で表示を行なう.次章以降において,ツールを構成するそれぞれの部分について説明する.