狠狠撸

狠狠撸Share a Scribd company logo
本田 紘貴1 吉田 則裕 (yoshida AT ertl.jp) 2 井上 克郎1 1 大阪大学
2 名古屋大学
コードクローン検出?変更管理ツール群の開発
コードクローン変更履歴可視化システムCCEvovis [3]
概要
Clone Notifierは,2バージョン間の変更履歴情報のみを提供
問題:初心者の開発者にとっては使いにくい
- どの2バージョンを入力すればよいかわからない
- 重要な変更履歴を見落とす可能性がある
複数バージョン間の変更履歴全体を分析し可視化
Web UI
New
Changed
Deleted
変更履歴可視化ページ
クローンセット一覧ページ
ソースコードページ
クローンセット内に修正されたクローン
と修正されていないクローンが存在
同時修正されていないコード片発見
Click
Click
プロジェクト中の
クローンセットに
どのような変更が
されたか把握可能
コードクローン変更管理システムClone Notifier [2]
背景
クローンセット:互いにクローンとなっているコード片の集合
クローンセットに対する保守作業
? 同時修正
? 集約
保守作業の効率化のためにコードクローンの変更管理が必要
処理概要
クローン
検出
クローンの
対応付け
クローン
検出
Vi+1
クローンセット
の分類
対応付けされた
コードクローン
Ci Ci+1
Vi Ci
Ci+1
クローンセットの分類
: 2バージョン間に存在し,変更されなかったもの.
: 新バージョンのみに存在するもの.集約対象の候補.
: 旧バージョンのみに存在するもの.集約完了を確認可.
: 2バージョン間に存在し,変更されたもの.同時修正
されているか確認可.
評価
企業のソフトウェア開発(保守段階)に約40日間適用
対象プロジェクト
? 開発言語:Java
? 開発人数:6人
開発者は,保守対象クローンセット11個を発見できた
? 開発規模:約120万行
? クローンセット数:約850
? Stable
? New
? Deleted
? Changed
保守対象となる可能性の高いクローンセット情報を提供
:クローンセット中のコード片を一貫して修正すること
:クローンセット中のコード片を1つにまとめ,サブ
ルーチンで呼び出すこと
多言語に対応可能なクローン検出ツールCCFinderSW [1]
概要
? 字句解析ベースのクローン検出器CCFinderXは5つの言語に対応
? 対応言語を増やすためには個別に字句解析の実装が必要
問題:それぞれの字句解析の実装には手間がかかる
対応したい言語の文法を容易に入力できる仕組みを作成
構文定義記述の利用
? ANTLR1は構文定義記述から字句解析器や構文解析器を生成
? Grammars-v42はANTLRで利用可能な150以上の構文定義記述を所有
構文定義記述から字句解析に必要な情報(コメント文法,予
約語,文字列リテラル)を自動抽出するモジュールの開発
1http://www.antlr.org/ 2https://github.com/antlr/grammars-v4
評価
? 42言語のうち83%の言語ですべての必要な情報を抽出できた
? C++に対する検出において,CCFinderXと同等の検出能力を確認
処理概要 ソースコード
変換処理
クローン検出?出力整形
クローン情報
字句分割
識別子判別
コメント文法情報
予約語情報
構文定義記述
構文定義記述解析
モジュール
字句列
変換済みの字句列
構文定義記述を与える
だけで字句解析に必要
な情報を自動的に抽出
CCFinderSW
コメント除去
字句解析
[1] Y. Semura, N. Yoshida, E. Choi, and K. Inoue, “Multilingual Detection of Code Clones Using ANTLR
Grammar Definitions,” in Proc. APSEC, December 2018, pp. 673-677
[2] 山中裕樹,崔恩瀞,吉田則裕,井上克郎,佐野建樹,“コードクローン変更管理システム
の開発と実プロジェクトへの適用,”情報処理学会論文誌,vol.54, no.2, pp.883–893, 2013, 6.
[3] H. Honda, S. Tokui, K. Yokoi, E. Choi, N. Yoshida, and K. Inoue, “CCEvovis: A Clone Evolution
Visualization System for Software Maintenance,” in Proc. ICPC, May 2019, pp. 122-125
URL CCFinderSW:
https://github.co
m/YuichiSemura/
CCFinderSW
Clone Notifier:
https://ja.osdn.net/
projects/clonenotifi
er/
CCEvovis:
https://github.co
m/hirotaka0616/
CCEvovis

More Related Content

Similar to コードクローン 検出?変更管理ツール群の開発 (20)

Liveness AccessViewのレビュー
Liveness AccessViewのレビューLiveness AccessViewのレビュー
Liveness AccessViewのレビュー
健補 萩原
?
2007/02 ClearCase & UCM の紹介
2007/02 ClearCase & UCM の紹介2007/02 ClearCase & UCM の紹介
2007/02 ClearCase & UCM の紹介
koichik
?
Intel OpenVINO? ツールキットのご紹介
Intel OpenVINO? ツールキットのご紹介Intel OpenVINO? ツールキットのご紹介
Intel OpenVINO? ツールキットのご紹介
Hiroshi Ouchiyama
?
础驳颈濒别ツール适合化分科会(変更管理?バージョン管理)
础驳颈濒别ツール适合化分科会(変更管理?バージョン管理)础驳颈濒别ツール适合化分科会(変更管理?バージョン管理)
础驳颈濒别ツール适合化分科会(変更管理?バージョン管理)
masanori kataoka
?
Devtools.next
Devtools.nextDevtools.next
Devtools.next
yoshikawa_t
?
継続的インテグレーションとテストの话
継続的インテグレーションとテストの话継続的インテグレーションとテストの话
継続的インテグレーションとテストの话
Preferred Networks
?
WPF/Silverlight視点で視る MetroスタイルのXAML
WPF/Silverlight視点で視るMetroスタイルのXAMLWPF/Silverlight視点で視るMetroスタイルのXAML
WPF/Silverlight視点で視る MetroスタイルのXAML
Yuya Yamaki
?
ソフトウェア构成管理のインフラ
ソフトウェア构成管理のインフラソフトウェア构成管理のインフラ
ソフトウェア构成管理のインフラ
kokiya
?
Agileツール適合化分科会(ci ツール)
Agileツール適合化分科会(ci ツール)Agileツール適合化分科会(ci ツール)
Agileツール適合化分科会(ci ツール)
masanori kataoka
?
【技术研究部】バージョン管理について
【技术研究部】バージョン管理について【技术研究部】バージョン管理について
【技术研究部】バージョン管理について
KeepAlive1
?
「文書管理システム-作成用キット」の紹介, Introduction of "Document management system-Creation Kit"
「文書管理システム-作成用キット」の紹介, Introduction of "Document management system-Creation Kit"「文書管理システム-作成用キット」の紹介, Introduction of "Document management system-Creation Kit"
「文書管理システム-作成用キット」の紹介, Introduction of "Document management system-Creation Kit"
ssuser285ddb
?
碍别测肠濒辞补办の実际?翻訳プロジェクト绍介
碍别测肠濒辞补办の実际?翻訳プロジェクト绍介碍别测肠濒辞补办の実际?翻訳プロジェクト绍介
碍别测肠濒辞补办の実际?翻訳プロジェクト绍介
Hiroyuki Wada
?
What's New in the Elastic 8.2 Release - Seamless User Experience with Search -
What's New in the Elastic 8.2 Release - Seamless User Experience with Search -What's New in the Elastic 8.2 Release - Seamless User Experience with Search -
What's New in the Elastic 8.2 Release - Seamless User Experience with Search -
Shotaro Suzuki
?
Chrome DevTools.next
Chrome DevTools.nextChrome DevTools.next
Chrome DevTools.next
yoshikawa_t
?
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF
Atomu Hidaka
?
Xilinx2013d
Xilinx2013dXilinx2013d
Xilinx2013d
Kiyoshi Ogawa
?
バージョン管理の断捨离
バージョン管理の断捨离バージョン管理の断捨离
バージョン管理の断捨离
Kazushi Kamegawa
?
惭补办别骋辞辞诲で快适なテスト駆动开発を
惭补办别骋辞辞诲で快适なテスト駆动开発を惭补办别骋辞辞诲で快适なテスト駆动开発を
惭补办别骋辞辞诲で快适なテスト駆动开発を
Atsuhiro Kubo
?
静的解析Klocwork とJenkins CIの連携
静的解析Klocwork とJenkins CIの連携静的解析Klocwork とJenkins CIの連携
静的解析Klocwork とJenkins CIの連携
Masaru Horioka
?
Azure DevOps Online Vol.3 - Inside Azure Pipelines
Azure DevOps Online Vol.3 - Inside Azure PipelinesAzure DevOps Online Vol.3 - Inside Azure Pipelines
Azure DevOps Online Vol.3 - Inside Azure Pipelines
Kazushi Kamegawa
?
Liveness AccessViewのレビュー
Liveness AccessViewのレビューLiveness AccessViewのレビュー
Liveness AccessViewのレビュー
健補 萩原
?
2007/02 ClearCase & UCM の紹介
2007/02 ClearCase & UCM の紹介2007/02 ClearCase & UCM の紹介
2007/02 ClearCase & UCM の紹介
koichik
?
Intel OpenVINO? ツールキットのご紹介
Intel OpenVINO? ツールキットのご紹介Intel OpenVINO? ツールキットのご紹介
Intel OpenVINO? ツールキットのご紹介
Hiroshi Ouchiyama
?
础驳颈濒别ツール适合化分科会(変更管理?バージョン管理)
础驳颈濒别ツール适合化分科会(変更管理?バージョン管理)础驳颈濒别ツール适合化分科会(変更管理?バージョン管理)
础驳颈濒别ツール适合化分科会(変更管理?バージョン管理)
masanori kataoka
?
継続的インテグレーションとテストの话
継続的インテグレーションとテストの话継続的インテグレーションとテストの话
継続的インテグレーションとテストの话
Preferred Networks
?
WPF/Silverlight視点で視る MetroスタイルのXAML
WPF/Silverlight視点で視るMetroスタイルのXAMLWPF/Silverlight視点で視るMetroスタイルのXAML
WPF/Silverlight視点で視る MetroスタイルのXAML
Yuya Yamaki
?
ソフトウェア构成管理のインフラ
ソフトウェア构成管理のインフラソフトウェア构成管理のインフラ
ソフトウェア构成管理のインフラ
kokiya
?
Agileツール適合化分科会(ci ツール)
Agileツール適合化分科会(ci ツール)Agileツール適合化分科会(ci ツール)
Agileツール適合化分科会(ci ツール)
masanori kataoka
?
【技术研究部】バージョン管理について
【技术研究部】バージョン管理について【技术研究部】バージョン管理について
【技术研究部】バージョン管理について
KeepAlive1
?
「文書管理システム-作成用キット」の紹介, Introduction of "Document management system-Creation Kit"
「文書管理システム-作成用キット」の紹介, Introduction of "Document management system-Creation Kit"「文書管理システム-作成用キット」の紹介, Introduction of "Document management system-Creation Kit"
「文書管理システム-作成用キット」の紹介, Introduction of "Document management system-Creation Kit"
ssuser285ddb
?
碍别测肠濒辞补办の実际?翻訳プロジェクト绍介
碍别测肠濒辞补办の実际?翻訳プロジェクト绍介碍别测肠濒辞补办の実际?翻訳プロジェクト绍介
碍别测肠濒辞补办の実际?翻訳プロジェクト绍介
Hiroyuki Wada
?
What's New in the Elastic 8.2 Release - Seamless User Experience with Search -
What's New in the Elastic 8.2 Release - Seamless User Experience with Search -What's New in the Elastic 8.2 Release - Seamless User Experience with Search -
What's New in the Elastic 8.2 Release - Seamless User Experience with Search -
Shotaro Suzuki
?
Chrome DevTools.next
Chrome DevTools.nextChrome DevTools.next
Chrome DevTools.next
yoshikawa_t
?
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF
Atomu Hidaka
?
バージョン管理の断捨离
バージョン管理の断捨离バージョン管理の断捨离
バージョン管理の断捨离
Kazushi Kamegawa
?
惭补办别骋辞辞诲で快适なテスト駆动开発を
惭补办别骋辞辞诲で快适なテスト駆动开発を惭补办别骋辞辞诲で快适なテスト駆动开発を
惭补办别骋辞辞诲で快适なテスト駆动开発を
Atsuhiro Kubo
?
静的解析Klocwork とJenkins CIの連携
静的解析Klocwork とJenkins CIの連携静的解析Klocwork とJenkins CIの連携
静的解析Klocwork とJenkins CIの連携
Masaru Horioka
?
Azure DevOps Online Vol.3 - Inside Azure Pipelines
Azure DevOps Online Vol.3 - Inside Azure PipelinesAzure DevOps Online Vol.3 - Inside Azure Pipelines
Azure DevOps Online Vol.3 - Inside Azure Pipelines
Kazushi Kamegawa
?

More from Norihiro Yoshida (12)

ファジングツール础贵尝の利用を支援するツール贵耻锄锄4叠によるファジング教育の试み
ファジングツール础贵尝の利用を支援するツール贵耻锄锄4叠によるファジング教育の试みファジングツール础贵尝の利用を支援するツール贵耻锄锄4叠によるファジング教育の试み
ファジングツール础贵尝の利用を支援するツール贵耻锄锄4叠によるファジング教育の试み
Norihiro Yoshida
?
Extracting a Micro State Transition Table Using KLEE
Extracting a Micro State Transition Table Using KLEEExtracting a Micro State Transition Table Using KLEE
Extracting a Micro State Transition Table Using KLEE
Norihiro Yoshida
?
A Quantitative Comparison of Coverage-Based Greybox Fuzzers
A Quantitative Comparison of Coverage-Based Greybox FuzzersA Quantitative Comparison of Coverage-Based Greybox Fuzzers
A Quantitative Comparison of Coverage-Based Greybox Fuzzers
Norihiro Yoshida
?
ソフトウェア開発における産学協創フォーラム オープニング資料ソフトウェア開発における産学協創フォーラム オープニング資料
ソフトウェア開発における産学協創フォーラム オープニング資料
Norihiro Yoshida
?
Proactive Clone Recommendation System for Extract Method Refactoring
 Proactive Clone Recommendation System for Extract Method Refactoring Proactive Clone Recommendation System for Extract Method Refactoring
Proactive Clone Recommendation System for Extract Method Refactoring
Norihiro Yoshida
?
Code Search Based on Deep Neural Network and Code Mutation
Code Search Based on Deep Neural Network and Code MutationCode Search Based on Deep Neural Network and Code Mutation
Code Search Based on Deep Neural Network and Code Mutation
Norihiro Yoshida
?
机械学习システムにおける技术的负债について
机械学习システムにおける技术的负债について机械学习システムにおける技术的负债について
机械学习システムにおける技术的负债について
Norihiro Yoshida
?
When, why and for whom do practitioners detect technical debts?: An experienc...
When, why and for whom do practitioners detect technical debts?: An experienc...When, why and for whom do practitioners detect technical debts?: An experienc...
When, why and for whom do practitioners detect technical debts?: An experienc...
Norihiro Yoshida
?
Revisiting the Relationship Between Code Smells and Refactoring
Revisiting the Relationship Between Code Smells and RefactoringRevisiting the Relationship Between Code Smells and Refactoring
Revisiting the Relationship Between Code Smells and Refactoring
Norihiro Yoshida
?
Mining the Modern Code Review Repositories: A Dataset of People, Process and ...
Mining the Modern Code Review Repositories: A Dataset of People, Process and ...Mining the Modern Code Review Repositories: A Dataset of People, Process and ...
Mining the Modern Code Review Repositories: A Dataset of People, Process and ...
Norihiro Yoshida
?
IWESEP 2013
IWESEP 2013IWESEP 2013
IWESEP 2013
Norihiro Yoshida
?
MSR2013
MSR2013MSR2013
MSR2013
Norihiro Yoshida
?
ファジングツール础贵尝の利用を支援するツール贵耻锄锄4叠によるファジング教育の试み
ファジングツール础贵尝の利用を支援するツール贵耻锄锄4叠によるファジング教育の试みファジングツール础贵尝の利用を支援するツール贵耻锄锄4叠によるファジング教育の试み
ファジングツール础贵尝の利用を支援するツール贵耻锄锄4叠によるファジング教育の试み
Norihiro Yoshida
?
Extracting a Micro State Transition Table Using KLEE
Extracting a Micro State Transition Table Using KLEEExtracting a Micro State Transition Table Using KLEE
Extracting a Micro State Transition Table Using KLEE
Norihiro Yoshida
?
A Quantitative Comparison of Coverage-Based Greybox Fuzzers
A Quantitative Comparison of Coverage-Based Greybox FuzzersA Quantitative Comparison of Coverage-Based Greybox Fuzzers
A Quantitative Comparison of Coverage-Based Greybox Fuzzers
Norihiro Yoshida
?
ソフトウェア開発における産学協創フォーラム オープニング資料ソフトウェア開発における産学協創フォーラム オープニング資料
ソフトウェア開発における産学協創フォーラム オープニング資料
Norihiro Yoshida
?
Proactive Clone Recommendation System for Extract Method Refactoring
 Proactive Clone Recommendation System for Extract Method Refactoring Proactive Clone Recommendation System for Extract Method Refactoring
Proactive Clone Recommendation System for Extract Method Refactoring
Norihiro Yoshida
?
Code Search Based on Deep Neural Network and Code Mutation
Code Search Based on Deep Neural Network and Code MutationCode Search Based on Deep Neural Network and Code Mutation
Code Search Based on Deep Neural Network and Code Mutation
Norihiro Yoshida
?
机械学习システムにおける技术的负债について
机械学习システムにおける技术的负债について机械学习システムにおける技术的负债について
机械学习システムにおける技术的负债について
Norihiro Yoshida
?
When, why and for whom do practitioners detect technical debts?: An experienc...
When, why and for whom do practitioners detect technical debts?: An experienc...When, why and for whom do practitioners detect technical debts?: An experienc...
When, why and for whom do practitioners detect technical debts?: An experienc...
Norihiro Yoshida
?
Revisiting the Relationship Between Code Smells and Refactoring
Revisiting the Relationship Between Code Smells and RefactoringRevisiting the Relationship Between Code Smells and Refactoring
Revisiting the Relationship Between Code Smells and Refactoring
Norihiro Yoshida
?
Mining the Modern Code Review Repositories: A Dataset of People, Process and ...
Mining the Modern Code Review Repositories: A Dataset of People, Process and ...Mining the Modern Code Review Repositories: A Dataset of People, Process and ...
Mining the Modern Code Review Repositories: A Dataset of People, Process and ...
Norihiro Yoshida
?

コードクローン 検出?変更管理ツール群の開発

  • 1. 本田 紘貴1 吉田 則裕 (yoshida AT ertl.jp) 2 井上 克郎1 1 大阪大学 2 名古屋大学 コードクローン検出?変更管理ツール群の開発 コードクローン変更履歴可視化システムCCEvovis [3] 概要 Clone Notifierは,2バージョン間の変更履歴情報のみを提供 問題:初心者の開発者にとっては使いにくい - どの2バージョンを入力すればよいかわからない - 重要な変更履歴を見落とす可能性がある 複数バージョン間の変更履歴全体を分析し可視化 Web UI New Changed Deleted 変更履歴可視化ページ クローンセット一覧ページ ソースコードページ クローンセット内に修正されたクローン と修正されていないクローンが存在 同時修正されていないコード片発見 Click Click プロジェクト中の クローンセットに どのような変更が されたか把握可能 コードクローン変更管理システムClone Notifier [2] 背景 クローンセット:互いにクローンとなっているコード片の集合 クローンセットに対する保守作業 ? 同時修正 ? 集約 保守作業の効率化のためにコードクローンの変更管理が必要 処理概要 クローン 検出 クローンの 対応付け クローン 検出 Vi+1 クローンセット の分類 対応付けされた コードクローン Ci Ci+1 Vi Ci Ci+1 クローンセットの分類 : 2バージョン間に存在し,変更されなかったもの. : 新バージョンのみに存在するもの.集約対象の候補. : 旧バージョンのみに存在するもの.集約完了を確認可. : 2バージョン間に存在し,変更されたもの.同時修正 されているか確認可. 評価 企業のソフトウェア開発(保守段階)に約40日間適用 対象プロジェクト ? 開発言語:Java ? 開発人数:6人 開発者は,保守対象クローンセット11個を発見できた ? 開発規模:約120万行 ? クローンセット数:約850 ? Stable ? New ? Deleted ? Changed 保守対象となる可能性の高いクローンセット情報を提供 :クローンセット中のコード片を一貫して修正すること :クローンセット中のコード片を1つにまとめ,サブ ルーチンで呼び出すこと 多言語に対応可能なクローン検出ツールCCFinderSW [1] 概要 ? 字句解析ベースのクローン検出器CCFinderXは5つの言語に対応 ? 対応言語を増やすためには個別に字句解析の実装が必要 問題:それぞれの字句解析の実装には手間がかかる 対応したい言語の文法を容易に入力できる仕組みを作成 構文定義記述の利用 ? ANTLR1は構文定義記述から字句解析器や構文解析器を生成 ? Grammars-v42はANTLRで利用可能な150以上の構文定義記述を所有 構文定義記述から字句解析に必要な情報(コメント文法,予 約語,文字列リテラル)を自動抽出するモジュールの開発 1http://www.antlr.org/ 2https://github.com/antlr/grammars-v4 評価 ? 42言語のうち83%の言語ですべての必要な情報を抽出できた ? C++に対する検出において,CCFinderXと同等の検出能力を確認 処理概要 ソースコード 変換処理 クローン検出?出力整形 クローン情報 字句分割 識別子判別 コメント文法情報 予約語情報 構文定義記述 構文定義記述解析 モジュール 字句列 変換済みの字句列 構文定義記述を与える だけで字句解析に必要 な情報を自動的に抽出 CCFinderSW コメント除去 字句解析 [1] Y. Semura, N. Yoshida, E. Choi, and K. Inoue, “Multilingual Detection of Code Clones Using ANTLR Grammar Definitions,” in Proc. APSEC, December 2018, pp. 673-677 [2] 山中裕樹,崔恩瀞,吉田則裕,井上克郎,佐野建樹,“コードクローン変更管理システム の開発と実プロジェクトへの適用,”情報処理学会論文誌,vol.54, no.2, pp.883–893, 2013, 6. [3] H. Honda, S. Tokui, K. Yokoi, E. Choi, N. Yoshida, and K. Inoue, “CCEvovis: A Clone Evolution Visualization System for Software Maintenance,” in Proc. ICPC, May 2019, pp. 122-125 URL CCFinderSW: https://github.co m/YuichiSemura/ CCFinderSW Clone Notifier: https://ja.osdn.net/ projects/clonenotifi er/ CCEvovis: https://github.co m/hirotaka0616/ CCEvovis