アイテムセットマイニングを利用した コードクローン分析作業の効率向上

23
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka Univ アアアアアアアアアアアアアアアアア アアアアアアアアアアアアアアアア アアアアアアアアアアアアアア M2 アア アア

Upload: dianne

Post on 18-Jan-2016

34 views

Category:

Documents


2 download

DESCRIPTION

アイテムセットマイニングを利用した コードクローン分析作業の効率向上. 大阪大学大学院情報科学研究科 M2  宮崎 宏海. 概要. コードクローン分析技術をより効率的に行える手法を提案 コードクローンの散布図では,個々のコードクローンに対して調査をする際はどこから見ていけば良いか分からない. コードクローンとは. コードクローンの弊害 コードクローン部分に修正を加える場合,全てのコード片に対して修正を検討する必要がある. ソースコード中に出現する同一または類似するコード片 主な出現要因 コピー&ペースト 定型的な処理(ファイルオープン,データベース処理など). - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: アイテムセットマイニングを利用した コードクローン分析作業の効率向上

Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

アイテムセットマイニングを利用した

コードクローン分析作業の効率向上

大阪大学大学院情報科学研究科M2  宮崎 宏海

Page 2: アイテムセットマイニングを利用した コードクローン分析作業の効率向上

2Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

概要コードクローン分析技術をより効率的に行

える手法を提案►コードクローンの散布図では,個々のコードク

ローンに対して調査をする際はどこから見ていけば良いか分からない

Page 3: アイテムセットマイニングを利用した コードクローン分析作業の効率向上

3Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

コードクローンとは

コードクローンの弊害►コードクローン部分に修

正を加える場合,全てのコード片に対して修正を検討する必要がある

コードクローン

コピーアンドペースト

ソースコード中に出現する同一または類似するコード片►主な出現要因

コピー&ペースト 定型的な処理(ファイルオープン,データベース処理な

ど)

Page 4: アイテムセットマイニングを利用した コードクローン分析作業の効率向上

4Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

コードクローンに関するこれまでの研究

コードクローンに対する支援ツール►CCFinder[1]

コードクローン検出ツールトークン単位でコードクローンを検出多種のプログラミング言語 (C, C++. Java, etc..) に対

応解析結果はテキスト形式で出力

[1] T. Kamiya, S. Kusumoto, K. Inoue : “CCFinder : A multi-linguistic token-based code clone detection system for large scale source code” , IEEE Transactions on Software Engineering, 28(7), pp.654-670, July 2002.

[2] Y. Ueda, T. Kamiya, S. Kusumoto and K. Inoue, “Gemini: Maintenance Support Environment Based on Code Clone Analysis”, Proc. Of the 8th IEEE International Symposium on Software Metrics, 67-76, 2002.

Page 5: アイテムセットマイニングを利用した コードクローン分析作業の効率向上

5Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

クローンペアとクローンセットクローンペア:互いにクローンとなっているコード片の対クローンセット:互いにクローンとなっているコード片の

集合

C1

C3

C2

C4

C5

クローンペア

クローンセット

( C1,C3 ) { C1,C3,C4 }

( C1,C4 ) { C2,C5 }( C3,C4 )( C2,C5 )類似したコード片

類似したコード片

Page 6: アイテムセットマイニングを利用した コードクローン分析作業の効率向上

6Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

散布図定義

►対象とするソースコードの集合に含まれるコードクローンの散布状況を表す

►左上を始点として水平方向・垂直方向にソースコードのトークンを出現順に配置

►水平方向・垂直方向のトークンが一定数以上連続して一致する箇所に点をつける

a, b, c, ... : トークン : トークンが一致した箇所

a

a

a

a

a

a

c

b

b

c

c

c

c c c cb b b

b

Page 7: アイテムセットマイニングを利用した コードクローン分析作業の効率向上

7Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

散布図の利点と問題点利点

►システムのどこにコードクローンが含まれているかを瞬時に把握できる

問題点►個々のコードクローンを

調査する場合に,どのコードクローンから調査すればいいか分かり辛い

►コードクローンが固まっている部分に分析すべきものがあるとは限らない

Page 8: アイテムセットマイニングを利用した コードクローン分析作業の効率向上

8Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

研究の目的とアプローチ目的

►個々のコードクローンを分析する際に,散布図上にどのコードクローンから調査するべきかを表示する

アプローチ►コードクローンの出現パターンを抽出する

同じクローンセットに属するコードクローンは類似した機能を持つ

複数のコードクローンを共有するファイルは類似度が高いと考えられる

Page 9: アイテムセットマイニングを利用した コードクローン分析作業の効率向上

9Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

出現パターンの抽出個々のコードクローンではなく,その出現パターン

を見ることでより巨視的な視点による分析が可能

ファイル1

ファイル 2

aa

a

ab

b

b b bcc

cc

c

a

ca

b

aa

a

b b

b

c

cc

c c c

c

d a

a

b

cc

cc

a

d

eee

f

f

f f

ファイル3

ファイル5

ファイル 4 ファイル 6

ファイル 1 ~ 4 同士の類似度は,ファイル 1 ~ 4 とファイル 5 , 6 の類似度より高いと考えられる

Page 10: アイテムセットマイニングを利用した コードクローン分析作業の効率向上

10Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

提案手法 CCFinder から得たコードクローン情報か

ら各ファイルに含まれるコードクローンの出現パターンを求める

手法の手順1. コードクローンを検出する2. コードクローン情報をもとに, FP-tree[3] を作

成する3. コードクローンの頻出パターン * を求める

* :対象とするプロジェクトに一定回数以上出現するパターン

[3] J. Han, J. Pei and Y. Yin ”Mining Frequent Patterns without Candidate Generation”In Proc. of the ACM SIGMOD Conference on Management of Data,pp.1-12, 2000.

Page 11: アイテムセットマイニングを利用した コードクローン分析作業の効率向上

11Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

クローンパターンコードクローンの出現パターンを以降では「ク

ローンパターン」と呼称

C1

C3

C2

C4

C5

: CS1 (クローンセット 1 )に属する コードクローン

ファイル 1

ファイル 2

: CS2 (クローンセット 2 )に属する コードクローン

パターンに含まれるクローンの個数が 2 個以上の場合

C6

C8

C7

F3F2F1

ファイル 3

定義►構成要素はクローンセット

ID►構成するクローンセットに

属するコードクローンが,全て同じファイルに存在

クローンパターンの特徴►コードクローンの出現する

順番は考慮しない►パターンは複数のファイル

に含まれる

[CS1,CS2]

[CS1,CS1] [CS1,CS2] [CS1,CS1,CS2]

[CS1,CS1] [CS1,CS2] [CS1,CS1,CS2]

Page 12: アイテムセットマイニングを利用した コードクローン分析作業の効率向上

12Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

1 .コードクローンの検出既存のコードクローン検出ツールを使用クローンセット情報の構築

►クローンパターンを構成する要素がクローンセット ID であるため

►コードクローンが属するクローンセット ID と,コードクローンを含むファイルとの対応付け

Page 13: アイテムセットマイニングを利用した コードクローン分析作業の効率向上

13Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

2 . FP-tree の作成( 1/2 )頻出クローンセット ID を取得

►パターンを含むファイルの数の閾値を設定►閾値以上の個数のファイルに含まれるクローンセットを

ファイルの個数と共に保持►各ファイルについて,含む頻出クローンセット ID を総

出現回数の降順でソート

例:パターンを含むファイルの個数の最小値を 3 個とした場合

( a : 4 個)( b : 4 個)( c : 4 個)( e : 3 個)

ファイル ID12345

クローンセット IDa, b, c, da, b, e, f

c, da, b, c, e

a, b, c, e, f

頻出クローンセット IDa, b, ca, b, e

ca, b, c, ea, b, c, e

( d : 2 個)( f : 2 個)

閾値以上 閾値未満

総出現回数

Page 14: アイテムセットマイニングを利用した コードクローン分析作業の効率向上

14Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

2 . FP-tree の作成( 2/2 )FP-tree を構築

►FP-tree の特徴木構造各ノードではクローン

セット ID とカウントを保持

各ノードから root までの経路上にあるノードが保持するクローンセットの組み合わせが,カウントの数だけ同一ファイル内に出現

root

e:2

c:3

b:4

a:4

e:1

c:1

前頁の表の FP-tree

{ a , b , c } が同時に 3 つのファイルに含まれていることが分かる

{ c } が 1 つのファイルに含まれていることが分かる

Page 15: アイテムセットマイニングを利用した コードクローン分析作業の効率向上

15Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

3 .頻出パターンの取得( 1/2 ) FP ー tree から頻出パターンを取得

► クローンセット ID= c を含む頻出パターンの取得手順

1. c を保持するノードのカウントと, root までの経路上のノードが保持するクローンセット ID を調べる

2. c を含む全てのファイルについて 1. の情報を調べ,統合する

3. 2. の情報とパターンを含むファイル数の閾値から頻出パターンを求める

c:3

b:4

a:4

c:1

前頁の FP-tree から c を含むパターンを見つける場合

a, b, c が同時に3 つのファイルに

現れる

c が 1 つのファイルに現れる

a, b, c が同時に 3 つのファイルに,c が 4 つのファイルに同時に現れ

頻出パターン

{ a, b, c }{ c }

Page 16: アイテムセットマイニングを利用した コードクローン分析作業の効率向上

16Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

3 .頻出パターンの取得( 2/2 )不要なパターンを除去

►不要なパターンの条件 2 つのパターンが同じファイルに含まれる パターンを構成するクローンセット ID が包含関係になっている

►包含されているパターンを除去する包含しているパターンに比べて,新たに得られる情報がないた

ファイル IDf1, f2, f3, f4f1, f2, f3, f4

頻出パターン ID12

クローンセット IDa, b, c, d

a, b, c

パターン間でクローンセット ID が包含関係になる例

Page 17: アイテムセットマイニングを利用した コードクローン分析作業の効率向上

17Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

実験の概要実験の目的

►コードクローンの頻出パターンがコードクローン分析に有用かを調べる

実験の条件►コードクローン検出ツール: CCFinder►パターンを構成するクローンセット数の最小値: 2►パターンを含むファイル数の最小値: 2

JHotDraw (バージョン 5.4 )に適用►ファイル数: 484 個( 71736 行)►検出したコードクローン: 1604 個►検出したクローンセット: 323 個►取得したパターン: 40 個

Page 18: アイテムセットマイニングを利用した コードクローン分析作業の効率向上

18Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

コードクローン分析に有用であるかの判断基準

パターンを構成するコードクローンがファイルの特徴を表しているか

パターンを含むファイルが,コードクローンを含むファイルに比べて絞り込めているか

パターンを含むファイルの集合 F

全てのファイル

CS2 を含むファイルの集合 F2

CS3 を含むファイルの集合 F3

CS1 を含むファイルの集合 F1

絞り込めている 絞り込めていないパターン{ CS1, CS2, CS3 }の場合

Page 19: アイテムセットマイニングを利用した コードクローン分析作業の効率向上

19Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

取得した頻出パターンの例( 1/2)

31 public void execute() {32      super.execute();33      setUndoActivity(createUndoActivity());34      getUndoActivity().setAffectedFigures(35   view().selectionZOrdered());36      FigureEnumeration fe = 37         getUndoActivity().getAffectedFigures();38      while (fe.hasNextFigure()) {39   view(). drawing(

64 public boolean undo() {65      if (!super.undo()) {66   return false;67      }68    FigureEnumeration fe = 69         getAffectedFigures();70     while (fe.hasNextFigure()) {71      Figure currentFigure = 72          fe.nextFigure();

43 public void execute() {44      super.execute();45      setUndoActivity(createUndoActivity());46      getUndoActivity().setAffectedFigures(47 view().selection());48      FigureEnumeration fe = 49 getUndoActivity().getAffectedFigures();50      while (fe.hasNextFigure()) {51 fe. nextFigure(

79 public boolean undo() {80     if (!super.undo()) {81 return false;82     }83    FigureEnumeration fe = 84           getAffectedFigures();85     while (fe.hasNextFigure()) {86 Figure f = fe.nextFigure();

SendToBackCommand.java ChangeAttributeCommand.java

:クローンペアになっているコード片

Page 20: アイテムセットマイニングを利用した コードクローン分析作業の効率向上

20Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

取得した頻出パターンの例( 2/2)

パターンを構成するコードクローン►メソッド execute() :複数の図形を対象としたコマンド

の実行を記述►メソッド undo() :そのファイルが記述するコマンドの

取り消し処理を記述パターンを含むファイル

►ChangeAttributeCommand.java►SendToBackCommand.java

頻出パターンが持つ情報►複数の図形を対象としたコマンドを実行►そのコマンドを取り消す

Page 21: アイテムセットマイニングを利用した コードクローン分析作業の効率向上

21Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

ファイルの絞り込みを行ったパターン

JHotDraw から取得したパターン 40 個中 6 個具体例

►前述の頻出パターン►execute() の一部を含むファイル

BringToFrontCommand.java ChangeAttributeCommand.java SendToBackCommand.java

►undo() の一部を含むファイル AlignCommand.java ChangeAttributeCommand.java ConnectedTextTool.java SendToBackCommand.java

execute()メソッドを持つが,複数の図形を対象としたものでは

ない

execute()メソッドを持たない

UndoActivity クラスを持つが

undo()メソッドの記述はない

Page 22: アイテムセットマイニングを利用した コードクローン分析作業の効率向上

22Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

考察単一のコードクローンからは得られない情

報を取得►ファイルが持つ機能を表すパターン►ファイルの絞り込みが出来たパターン

特定の機能を持つファイルに分類できた

取得した頻出パターンを含むファイルと類似した機能を持つファイルが存在►パターンを含むべきファイルの検出漏れ

Page 23: アイテムセットマイニングを利用した コードクローン分析作業の効率向上

23Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

まとめと今後の課題まとめ

►散布図上で効率的なクローン調査が可能となる手法を提案

►JHotDraw に対して実験を行い,取得したパターンがコードクローン分析に有用であるか判断した

今後の課題►散布図への情報の付加►パターンを構成する要素の検討

CCFinder で検出するコードクローンの最小トークン数を変更

►評価基準の検討