構文木の比較に基づいたプログラム差分の表示方式

書誌事項

タイトル別名
  • A Display Method of Program Difference Based on Parsing Tree Comparison

この論文をさがす

抄録

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

収録刊行物

被引用文献 (1)*注記

もっと見る

詳細情報 詳細情報について

問題の指摘

ページトップへ