川口真司 松下誠 井上克郎 大阪大学大学院情報科学研究科

Slides:



Advertisements
Similar presentations
Trac と Eclipse の 便利な機能. プロジェクト管理システム: Trac 0. はじめに バージョン管理システム: Subversion 統合開発環境: Eclipse ・ Wiki による情報 管理 ・進捗状況の管理 ・プログラムの作 成 ・リポジトリに データを集める.
Advertisements

Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 保守支援を目的とした コードクローン情報検索ツール.
大杉 直樹†, 神谷 年洋‡, 門田 暁人†, 松本 健一† †奈良先端科学技術大学院大学 情報工学科 {naoki-o, akito-m,
コードクローン履歴閲覧環境を用いたクローン評価の試み
XHTML構文検証手法における スクリプト要素の静的解析アルゴリズム
ソフトウェアの類似性の分析とその応用に関する研究
Linux リテラシ 2006 第2回 基本コマンド2.
AGMアルゴリズムを用いた ギャップを含むコードクローン情報の生成
剽窃 他人の作品や論文を盗んで,自分のものとして発表すること. プログラムが剽窃される事例もある. Aさんのプログラム Xさんのプログラム
研究の背景 コードクローン ソースコード中に存在する一致または類似したコード片
FreeBSD Ports Collection におけるファイルクローンの検出
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
Java ソフトウェア部品検索システム SPARS-J のための リポジトリ自動更新機能の実現
コーディングにおける 細粒度作業履歴を用いた 手戻り支援ツールの検討
ソフトウェアリポジトリにおける コードクローン作成者・利用者関係分析手法とその適用
プログラム実行履歴を用いたトランザクションファンクション抽出手法
アイテムセットマイニングを利用した コードクローン分析作業の効率向上
プログラム実行時情報を用いたトランザクションファンクション抽出手法
大規模ソースコード集合を対象とした 類似関数集合群の抽出
ソースコードの変更履歴における メトリクス値の変化を用いた ソフトウェアの特性分析
ギャップを含むコードクローンの フィルタリング手法の提案
ソースコードの同時修正支援における関数クローン検出ツールの有効性調査
コードクローンに含まれるメソッド呼び出しの 変更度合の分析
コードクローンに含まれるメソッド呼び出しの 変更度合の調査
ソードコードの編集に基づいた コードクローンの分類とその分析システム
関数の変更履歴と呼出し関係に基づいた開発履歴理解支援システムの実現
開発履歴を用いたコードクローン作成者と利用者の 分析手法とその適用
動的依存グラフの3-gramを用いた 実行トレースの比較手法
コード片の生存期間がコードクローンと欠陥修正の有無に与える影響分析
オープンソース開発の履歴情報を用いたコミュニティ検索支援システム
既存ソフトウェアの変更履歴を利用したソースコード修正支援手法の提案
クローンセットに対する主要編集者の分析法の提案と調査
重複コードと非重複コードにおける 修正頻度の比較
三浦元喜 北陸先端科学技術大学院大学 知識科学研究科 2007/9/7
コードクローン検出ツールを用いた ソースコード分析システムの試作と プログラミング演習への適用
リファクタリング支援のための コードクローンに含まれる識別子の対応関係分析
オープンソース開発支援のための リビジョン情報と電子メールの検索システム
コードの生存期間を考慮したコードクローンと欠陥修正の関係調査
コードクローンの動作を比較するためのコードクローン周辺コードの解析
コードクローンに対する一貫性のない変更に起因する欠陥の検出
Token Comparison Approach to Detect Code Clone-related Bugs
プログラム実行履歴を用いたコードクローン検出手法
コードクローンの複雑度メトリクスを用いた開発者の特徴分析
開発履歴データのリアルタイム収集・分析システムEPMの拡張について ~ SRGMを用いた予測グラフの実現および既存解析システムとの連携 ~
バイトコードを単位とするJavaスライスシステムの試作
コードクローン編集者数に着目した開発履歴の分析
コードクローンのメトリクス値と 開発者の相関の調査
Geminiを用いた効果的なコードクローン分析方法
○ 後藤 祥1,吉田 則裕2 ,井岡 正和1 ,井上 克郎1 1大阪大学 2奈良先端科学技術大学院大学
ソフトウェア保守のための コードクローン情報検索ツール
コードクローンの理解支援を目的としたコードクローン周辺コードの解析
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
既存ソフトウェアの変更履歴を利用したソースコード修正支援システム
JAVAバイトコードにおける データ依存解析手法の提案と実装
コードクローン間の依存関係に基づく リファクタリング支援環境の実装
複数のリポジトリを統合できる バージョン管理システムの提案と試作
メトリクス値の変化に基づく コードクローンの編集傾向分析
保守請負時を対象とした 労力見積のためのメトリクスの提案
コードクローン間の依存関係に基づく リファクタリング支援手法の提案と実現
クローン検出ツールを用いた ソフトウェアシステムの類似度調査
オープンソースソフトウェアに対する コーディングパターン分析の適用
メソッドの同時更新履歴を用いたクラスの機能別分類法
開発作業の形式化に基づく プロセス評価 松下誠 大阪大学.
欠陥検出を目的とした類似コード検索法 吉田則裕,石尾隆,松下誠,井上克郎 大阪大学 大学院情報科学研究科
ソフトウェア理解支援を目的とした 辞書の作成法
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
コードクローン解析に基づく デザインパターン適用候補の検出手法
関数の変更履歴と呼び出し関係に 基づいた開発履歴理解支援システム
Geminiを用いた効果的なコードクローン分析方法
Presentation transcript:

川口真司 松下誠 井上克郎 大阪大学大学院情報科学研究科 クローン履歴を利用した クローン分析環境 川口真司 松下誠 井上克郎 大阪大学大学院情報科学研究科

発表の概要 クローン履歴分析 クローン履歴分析の応用 クローンの過去を追跡 書き換える場所の発見 書き換える場所の理解促進 2005/08/04

コードクローン コードクローン(あるいは単にクローン) クローンペア クローンセット 類似文字列が存在するコード片 クローンの位置は (ファイル名、開始行番号、終了行番号) で指定 クローンペア クローンA-1 とクローンA-2 が類似文字列であるときに、これらをクローンペアとよぶ クローンセット クローンペア関係において推移関係が成り立つクローンの集合 Clone A-1 Clone A-3 Clone A-2 Clone B-2 Clone B-1 2005/08/04

クローン履歴 1. ひとつのクローンセットを クローン発生時期から分類 2.過去に同じクローンセットだった クローンセットの発見 Clone A-3 追加 Clone A-3 Clone A-3 Clone A-1 Clone A-1 Clone A-1 Clone B-1 Clone B-1 Clone B-1 Clone A-4 Clone A-4, A-5 追加 Clone A-2 Clone A-2 Clone A-2 Clone B’-2 Clone B-5 Clone B’-2 Clone A-5 Clone B-2 Clone B-2 Clone B-2 Clone B’-1 Clone B-3 Clone B-4 Clone B’-3 Clone B’-1 Clone B’-3 Clone B-3, B-4, B-5 が編集 されて別クローンセットに Clone B’-3 削除 2.過去に同じクローンセットだった クローンセットの発見 3.コード中に含まれるコード クローンの変化を分析 2005/08/04

クローン履歴関係抽出手法 指定された期間 [0, t]、間隔Δt について期間 [0, t] を Δt ごとに分割、それぞれの時のファイルの状態をバージョン V0, V1, ..., Vt と表す 過去のプロダクトの取得には版管理システム (ex. cvs, subversion, ...) を用いる となりあうバージョン間について分析 V0, V1 をリポジトリから取得 V0, V1 間のクローン履歴関係を分析 Vt をリポジトリから取得 Vt-1, Vt 間を分析 ・・・ V0 V1 Vt-1 Vt 2005/08/04

クローン履歴を用いたプログラムの書き換え 書き換え箇所の発見 要改善箇所の提示 書き換え箇所の理解 クローンが入ったときのコミットログ 他の部分にコピーされた部分の 書き換え 2005/08/04

書き換え候補の提示 クローン 履歴をつかって範囲を広げる 2005/08/04

書き換え箇所の理解支援 どこからコピーされた? 2005/08/04

作成中の支援環境 クローン履歴閲覧環境 Eclipse プラグイン 主なUI ディレクトリ単位でのクローン行数の変遷グラフ クローンマップ 過去の時点のソースコード参照 2005/08/04

今後の課題 2005/08/04

2005/08/04

版管理システム 2005/08/04

履歴を考慮したクローン分析 過去にクローン関係にあったコード片の抽出 過去の時点でのクローン解析情報 現在のクローンは、過去のどのクローンに対応するか? Clone A-3 追加 Clone A-3 Clone A-3 Clone A-1 Clone A-1 Clone A-1 Clone B-1 Clone B-1 Clone B-1 Clone A-4 Clone A-4, A-5 追加 Clone A-2 Clone A-2 Clone A-2 Clone B’-2 Clone B-5 Clone B’-2 Clone A-5 Clone B-2 Clone B-2 Clone B-2 Clone B’-1 Clone B-3 Clone B-4 Clone B’-3 Clone B’-1 Clone B’-3 Clone B-3, B-4, B-5 が編集 されて別クローンセットに Clone B’-3 削除 クローンセット B, B’ を 「分離クローンセット」と呼ぶ 2005/08/04