40 likes | 173 Views
dcNavi: デバッグ支援のための グラフベース推薦システム. 九州工業大学 塩塚大 九州大学 鵜林尚靖. 概要. 見たことない 例外に直面!. 例)同じ例外に関連した修正 例) API の誤りやすい例. public class Property { public String readFile (String pathname) throws IOException { String val = null; File file = new File(pathname);
E N D
dcNavi:デバッグ支援のためのグラフベース推薦システムdcNavi:デバッグ支援のためのグラフベース推薦システム 九州工業大学 塩塚大 九州大学 鵜林尚靖
概要 見たことない 例外に直面! 例)同じ例外に関連した修正 例)APIの誤りやすい例 public class Property { public String readFile (String pathname) throws IOException { String val = null; File file = new File(pathname); FileReader fileReader = new FileReader(file) ; BufferedReader br = new BufferedReader(fileReader); val = br.readLine(); return val; } } public class Property { public String readFile (String pathname) throws IOException { String val = null; File file = new File(pathname); FileReader fileReader = new FileReader(file) ; BufferedReader br = new BufferedReader(fileReader); val = br.readLine(); return val; } } プロジェクトXXXの リポジトリ public class Property { public String readFile (String pathname) throws IOException { String val = null; File file = new File(pathname); FileReader fileReader = new FileReader(file) ; BufferedReader br = new BufferedReader(fileReader); val = br.readLine(); return val; } } プロジェクトXXXの リポジトリ APIの 使い方が間違ってる?! プロジェクトXXXの リポジトリ 推薦 生成 DCG 関心事 既存のリポジトリを活用! 他プロジェクトを活用! Debug Concern Graph 実行 生成 TDD(テスト駆動開発) デバッグのノウハウの収集 ・テスト結果の取得 ・関連したプログラム要素の取得 ・修正パターンの取得
DCG readFile のデバッグ :クラス :テスト結果 :メソッド :修正パターン diff-1 diff-2 バグ修正パターン(全27種) MC-DAP: メソッド呼出しのパラメータの変更 SQ-AROB: メソッド呼出しの追加 MC-DM:同一オブジェクトに対する呼び出すメソッドの変更 BufferedReader File Property PropertyTest Property File PropertyTest 修正パターン*: メソッド呼出の追加 FileReader exist readFile testReadFileFileNotExist testReadFile readLine readFile テスト成功 assertEquals testReadFileFileNotExist テスト成功 ⇒ デバッグ終了 テスト失敗 例外:FileNotFound *Pan, K., et al.: Toward an understanding of bug fix patterns. Empirical Software Engineering, pp.286-315, 2009. テスト成功 テスト失敗 ⇒ デバッグ開始 デバッグ時のテスト結果、プログラム要素(クラス、メソッド、フィールド)、修正パターンの3情報を収集
実験 • 準備.リポジトリからのDCG生成 • DCG生成時間の確認 • Eclipseプラグインで、Mylynに関連した9つのオープンソース • 実験.推薦量/推薦時間/推薦の質の確認 • 上記で生成したDCGを利用 [実施環境] CPU: Atom N280(1.66GHz), RAM:1GB, OS:Windows XP