Note†
コードクローンについて†
- 「同一」または「類似する」コード片
- ソースコードの再利用(コピー&ペースト)により、ソースコード中に遍在する
- コードクローンに変更を加える際、コードクローン全体に変更を加えなければいけないためコストがかかったり、変更漏れにより新たなバグを生む可能性がある
- 生産性や品質を低下させる原因として、検出手法や分析手法が研究されてきた
- 研究結果が様々で、コードクローンが品質に関係するとは言い切れない
- ソフトウェアシステムの改良・保守の過程でコードクローンがどう拡散していくかを分析する、クローン追跡手法が注目
- ソフトウェアシステムの開発において広く利用されているバージョン管理システムに記録された全変更履歴に基づいて、リビジョンを1つずつ辿りながら不具合が混入される原因を正しく理解することで、不具合の混入を未然に防ぐ対策の考案につながると期待
CCTについて†
- 対象は分散型バージョン管理システム
- これまでのクローン追跡ツールの対象は集中型バージョン管理システム
- 各リビジョンの変更履歴からリビジョン間の親子関係を特定するとともに、変更のあったファイルのみを抽出しコード片の特定を行い、クローンの特定・追跡を行う
- 不具合管理システムと連携する機能付き
- これまでほとんど分析事例がない、コードクローンの作成・利用過程に関与した開発者の人的側面に着目した分析が行える
- 特定の開発者が作成したコードクローンと後に発見される不具合との関係や、開発者間でのコードクローンの利用(共有)とソフトウェア品質との関係など
- 開発者は4種類に分けて特定する
- 作成者:オリジナルのクローンを作成した人(親クローン集合を持たないクローンを作成した人)
- 利用者:既存のクローンを他の場所に移植した人(クローン集合のクローン要素を増やした人)
- 変更者:ハッシュ値の変更を伴わないクローンに対する変更を行った人
- 削除者:ファイルの削除などによりクローンを削除した人
今後CCTを使って期待すること†
- コードクローンがどのように拡散していき、品質とどのように関係していくかの分析を進めていくことによって、コードクローンの存在とソフトウェア品質に明確な因果関係があるかを特定するための知見を得ること
D3.js†
- 「D3.js徹底入門」を読んで、使いそうだと思った章
- 2.6章 外部のデータを読み込む
- 9.5章 データセットの日付と対応させる
- 9.6章 ボタンクリックでグラフの表示範囲を変更する
ミーティング†
7/5(水)†
DONE†
- ガントチャートの作成
- 可視化プロトタイプ(PDF)の作成(時間軸の表示)
TODO†
- 可視化プロトタイプ(PDF)の作成(ファイルの表示)
- ガントチャートの修正
6/27(火)†
DONE†
- 「How Multiple Developers Affect the Evolution of Code Clones」
- 久木田先輩の修論を読み直した
TODO†
- ガントチャートを書く
- コードクローンの作成・利用過程における人的影響に関する論文を読む
- 一日一質問
6/21(水)†
DONE†
TODO†
- 久木田先輩の修論を読み直す
- 久木田先輩が読んできた論文を読む
- 7/16(日)までに聞きたいことをまとめる
6/14(水)†
DONE†
- CCTの実行
- 途中でリモートデスクトップの接続が切れたため、最後まで実行できなかった
TODO†
6/6(火)†
DONE†
TODO†
5/17(水)†
DONE†
- 「Visualizing Clone Detection Results」
- クローン検出ツールであるCloneDRの検出結果を可視化するツールの紹介
- 色を使って分かりやすかった
- 「Representing Clones in a Localized Manner」
- クローンの類似性と相違点をソースエディタ内で可視化する手法の紹介
- 一か所を見るだけで、他の箇所との違いが分かる
- 「D3.js徹底入門」を9章まで読んだ
TODO†
- 「D3.js徹底入門」を読み切る
- CCTの検出結果を見る
5/10(水)†
DONE†
- 「CodeCrawler - An Information Visualization Tool for Program Comprehension」
- CodeCrawlerという可視化ツールの紹介
- ソフトウェアの可視化が目的
- 「VisCad: Flexible Code Clone Analysis Support For NiCad」
- VisCadという可視化ツールの紹介
- NiCadのクローン検出結果を可視化
TODO†
- D3.jsの本を読み進める
- 「code clone」「visualization」で論文を調べる
5/2(火)†
DONE†
- D3.jsの勉強
- 論文「コードクローン検出とその関連技術」という論文を読んだ
- 論文「Insights into System-Wide Code Duplication」をまとめている途中
TODO†
DONE†
2/20(月)†
- nokogiri/src/checkcloneset/DeleteNewCloneCheckerMain.javaの内容の勉強
3/1(水)†
3/2(木)†
- nokogiriを見て、どこが何をするコードか確認しようとした
- COCO塾
3/9(木)†
3/10(金)†
3/21(火)†
4/4(月)†
- ドットインストール「PHPでウェブサービスを作れるようになろう」の実践
4/27(木)†
- 論文「Insights into System-Wide Code Duplication」を読んでいる途中
5/1(月)†
- 論文「Insights into System-Wide Code Duplication」をまとめている途中
5/8(月)†
- 論文「CodeCrawler - An Information Visualization Tool for Program Comprehension」を読んでいる途中
5/9(火)†
- 論文「CodeCrawler - An Information Visualization Tool for Program Comprehension」を読みきった
- 「code clone」、「visualization」に関する論文を探した
5/10(水)†
- 論文「VisCad: Flexible Code Clone Analysis Support For NiCad」を読んだ
- 「D3.js徹底入門」2章まで読んだ
5/11(木)†
- 論文「Visualizing Clone Detection Results」を読んだ
- 論文「Visualizing the Evolution of Code Clones」を読んだ
- 「D3.js徹底入門」4章まで読んだ
5/12(金)†
5/15(月)†
- 論文「Representing Clones in a Localized Manner」を読んだ
- 「D3.js徹底入門」9章まで読んだ
5/17(水)†
- CCTの実行方法を教わった
- 「D3.js徹底入門」10章まで読んだ
TODO†
4/27(木)†
- 5/2(火)13:00にミーティング参加、そのための準備
6/28(水)†
- 7/5(水)までに可視化のプロトタイプをパワポで作成
Schedule†
| Mon | Tue | Wed | Thu | Fri |
| 1 | | | | | |
| 2 | | | | 研究発表会 | |
| 3 | | | KFYO MTG | | |
| 4 | | | | | |
| 5 | | | | | |
Bookmarks†
Tools†
Read Papers†
CodeCrawler - An Information Visualization Tool for Program Comprehension†
- Author : Michele Lanza, Harald Gall, Stephane Ducasse, Martin Pinzger
- Source :
- Publication Date : 2005
- Read Date : 5/8〜5/9
- Overview :
- CodeCrawlerという、言語に依存しない情報視覚化ツールでできる視覚化の例を紹介
- 視覚化はPolymetric Viewを使っている
- Note :
VisCad: Flexible Code Clone Analysis Support For NiCad†
- Author : Muhammad Asaduzzaman, Chanchal K. Roy, Kevin A. Schneider
- Source :
- Publication Date : 2011
- Read Date : 5/9〜5/10
- Overview :
- NiCadのクローン検出結果を可視化するVisCadの紹介
- 可視化の方法としてVisCadでできること:散布図、Treemap、Radial Map
- Note :
Visualizing Clone Detection Results†
- Author : Robert Tairas, Jeff Gray, Ira D. Baxter
- Source :
- Publication Date : 2007
- Read Date : 5/10〜5/11
- Overview :
- クローン検出ツールであるCloneDRの検出結果を可視化するツールの紹介
- この可視化ツールでできることを説明している
- Note :
- 「散布図と比較して利点を説明する」的なことを書いていたが、だいたいはこのツールでできることの説明で、あまり比較している感じはしなかった
- ソースファイルを縦棒として、縦棒内のストライプの部分がクローン、同じ色のストライプは同じクローンを表していた
Visualizing the Evolution of Code Clones†
- Author : Ripon K. Saha, Chanchal K. Roy, Kevin A. Schneider
- Source :
- Publication Date : 2011
- Read Date : 5/11
- Overview :
- クローンの進化(ある期間のバージョンごとで、クローンがどう変化していくか)を可視化する方法の提示
- 提示された方法は散布図に手を加えたもの
- 散布図に色を使って、クローンクラスの変化の仕方を3種類に分けて示している
- Note :
- 散布図の見方が分からないから、散布図による可視化の論文を読んだほうがいいと感じた
Representing Clones in a Localized Manner†
- Author : Robert Tairas, Ferosh Jacob and Jeff Gray
- Source :
- Publication Date : 2011
- Read Date : 5/15
- Overview :
- クローンの類似性と相違点をソースエディタ内で可視化する手法の紹介
- 1つのクローングループから、そこに含まれるクローンの情報(他のクローンとの相違点)を可視化
- Note :
- クローンの部分を色の濃さや線を使って、エディタ内で分かりやすく強調していた
- 他のクローンとの相違点をポップアップで可視化している
- これによって、一か所を見るだけで他との違いが分かるようになっている
- エディタを増やさず、ソースエディタ内に可視化することで、分かりやすくしている
産業連携に基づいたコードクローン可視化手法の改良と実装†
- Author : 肥 後 芳 樹, 吉 田 則 裕, 楠 本 真 二, 井 上 克 郎
- Source :
- Publication Date :
- Read Date : 6/8
- Overview :
- コードクローン検出ツールCCFinder、可視化ツールGeminiを使用してもらった開発現場の意見を元に改良、実際に適用実験をして分析を行っていた
- 指摘された問題点
- コードクローン情報の中に、調査の必要があるコードクローンとそうでないものが混在
- ファイルに着目した分析を行うための機能がない
- スケーラビリティが低い
- 改良点
- 調査の必要がないコードクローンのフィルタリング
- クローン散布図の改良
- 多次元並行座標表現によるメトリクスグラフ、ファイルリストのビューを実装
- Note :
- 問題点、それに対する改良点、分析結果、今後の課題が分かりやすくまとめらていた
Actively Comparing Clones Inside The Code Editor†
- Author : Ferosh Jacob, Daqing Hou, Patricia Jablonski
- Source :
- Publication Date : 2010
- Read Date : 6/9
- Overview :
- コピー&ペーストによってできたクローンを記録して、クローン内のユーザーが変更を行ったコードの部分を強調して可視化する、CSeR(Code Segment Reuse)の実装と検証。
- Note :
- 変更の種類によって4種類に色分けして強調している。
Clone Maintenance through Analysis and Refactoring†
- Author : Robert Tairas
- Source :
- Publication Date : 2008
- Read Date : 6/12〜6/13
- Overview :
- クローン分析とリファクタリングに影響を与える新しい要素を見つける手法を探す
- これまでの研究
- クローン内のグローバル・ローカル変数の数と、クラス階層内のクローンの位置を考慮
- 今回の研究
- クローンの周囲の環境を含め、リファクタリングの可能性に影響を与える可能性のある他のプロパティを調査
- Note :
- どういう評価方法を行えばいいかを書いていて、それが参考になるんじゃないかと思った
How Multiple Developers Affect the Evolution of Code Clones†
- Author : Jan Harder
- Source :
- Publication Date : 2013
- Read Date : 6/23
- Overview :
- 分析内容
- 正確なクローンの保守に関わる開発者の数(バグを含まないクローンの保守に関わる開発者の数)
- 開発者の数が一貫性のない変更の可能性に影響するかどうか(開発者の数が矛盾した変更を引き起こすかどうか)
- 5つの対象システムにおけるコードクローンとコード作成の関係を分析
- 結果
- 単一著者クローンと複数著者クローンに違いが存在することを示した
- 複数の開発者がクローンに問題のある変更を引き起こす原因にはならなかった
- クローン管理活動の優先順位を決める指標として、クローンの著者数を使用することはお勧めできない
- Note :
- inconsistent changes to the clones(クローンへの一貫性のない変更):複数あるコードクローンを変更しようとしたとき、変更し忘れがあること
Cloning Practices: Why Developers Clone and What can be Changed†
- Author : Gang Zhang, Xin Peng, Zhenchang Xing, Wenyun Zhao
- Source :
- Publication Date : 2012
- Read Date : 6/27〜6/28
- Overview :
- 既存の研究
- 開発者がクローンを使う理由、それの技術的、個人的、組織的な理由を何も示唆していない
- 研究者の個人的経験に基づいていて、大規模な産業研究からの経験的支援はほぼされていない
- クローンのライフサイクルに関する研究がほぼなく、クローンのシステムへの導入に主に焦点を当てている
- 本研究
- 大規模な産業システムにおけるコードクローンのライフサイクルを調査する
- 結論
- クローンを扱うことは単なる技術的問題ではなく、個人的、組織的、歴史的なコンテキストの問題
- Note :
- クローンのライフサイクル:クローンができてから消える(リファクタリングされて1つにされる)までの流れ
Title†
- Author :
- Source :
- Publication Date :
- Read Date :
- Overview :
- Note :