test 2utils java test 1utils java public void
コードクローン • ソースコードに含まれる同一または類似した部分を持つ コード片を指す コードクローン test 2utils. java test 1utils. java public void encode. UTF 8(byte msg){ ……… return str; } public void encode. UTF 16(byte msg){ ……… return str; } public void encode. UTF 8(byte msg){ ……… return str; } クローンセット Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
コードクローン • ソフトウェア保守が困難になることがある – 例)コードを同時に変更できていないためにバグの原因を 生んでしまう test 1utils. java ①コード変更 public void encode. UTF 8(byte msg){ ……… return str 1 + str 2; } public void encode. UTF 16(byte msg){ ……… return str; } test 2utils. java public void encode. UTF 8(byte msg){ ……… return str; } ②変更漏れ→バグの原因 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
JDeodorantの動作の流れ ①クローンペアを入力する ④制約を満たす か確認する ②ネスト構造があれば 共通のネスト構造を探索する ③PDGを作成して マッピングする Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
削減可能ソースコード量の算出 • Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
調査 削減可能ソースコード量 • リファクタリング可能なコードクローンの 削減可能ソースコード量を調査した OSS名 Ant コードクロー ン行数(全行 数に対する割 合) リファクタリ ング可能な コードクロー ン行数 削減可能ソー スコード量 (Lo. C) コードクロー ン行数に 対する割合 60 k(22. 3%) 11, 224 3, 429 5. 7% Columba 4. 6 k(8. 5%) 1, 394 584 12. 7% JMeter 5. 6 k(6. 1%) 1, 117 385 6. 8% JEdit 1. 8 k(1. 0%) 384 136 7. 6% 175 k(56. 4%) 30, 495 9, 700 5. 5% JRuby 61 k(18. 8%) 7, 708 2, 161 3. 5% Xerces 83 k(34. 9%) 16, 611 5, 533 6. 6% JFree. Chart Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
調査 削減可能ソースコード量 Step① コードクローンの検出 OSS名 Ant コードクロー ン行数(全行 数に対する割 合) リファクタリ ング可能な コードクロー ン行数 削減可能ソー スコード量 (Lo. C) コードクロー ン行数に 対する割合 60 k(22. 3%) 11, 224 3, 429 5. 7% Columba 4. 6 k(8. 5%) 1, 394 584 12. 7% JMeter 5. 6 k(6. 1%) 1, 117 385 6. 8% JEdit 1. 8 k(1. 0%) 384 136 7. 6% 175 k(56. 4%) 30, 495 9, 700 5. 5% JRuby 61 k(18. 8%) 7, 708 2, 161 3. 5% Xerces 83 k(34. 9%) 16, 611 5, 533 6. 6% JFree. Chart Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
調査 削減可能ソースコード量 Step② リファクタリング可能なコードクローンの特定 OSS名 Ant コードクロー ン行数(全行 数に対する割 合) リファクタリ ング可能な コードクロー ン行数 削減可能ソー スコード量 (Lo. C) コードクロー ン行数に 対する割合 60 k(22. 3%) 11, 224 3, 429 5. 7% Columba 4. 6 k(8. 5%) 1, 394 584 12. 7% JMeter 5. 6 k(6. 1%) 1, 117 385 6. 8% JEdit 1. 8 k(1. 0%) 384 136 7. 6% 175 k(56. 4%) 30, 495 9, 700 5. 5% JRuby 61 k(18. 8%) 7, 708 2, 161 3. 5% Xerces 83 k(34. 9%) 16, 611 5, 533 6. 6% JFree. Chart Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
調査 削減可能ソースコード量 Step③削減可能ソースコード量の算出 OSS名 Ant コードクロー ン行数(全行 数に対する割 合) リファクタリ ング可能な コードクロー ン行数 削減可能ソー スコード量 (Lo. C) コードクロー ン行数に 対する割合 60 k(22. 3%) 11, 224 3, 429 5. 7% Columba 4. 6 k(8. 5%) 1, 394 584 12. 7% JMeter 5. 6 k(6. 1%) 1, 117 385 6. 8% JEdit 1. 8 k(1. 0%) 384 136 7. 6% 175 k(56. 4%) 30, 495 9, 700 5. 5% JRuby 61 k(18. 8%) 7, 708 2, 161 3. 5% Xerces 83 k(34. 9%) 16, 611 5, 533 6. 6% JFree. Chart Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
ご清聴ありがとうございました Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
- Slides: 24