欠陥検出を目的とした類似コード検索法 吉田則裕,石尾隆,松下誠,井上克郎 大阪大学 大学院情報科学研究科

Slides:



Advertisements
Similar presentations
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 ソフトウェア部品推薦のための.
Advertisements

Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 保守支援を目的とした コードクローン情報検索ツール.
XHTML構文検証手法における スクリプト要素の静的解析アルゴリズム
ソースコードの編集内容を入力とした ソフトウェア部品の自動検索
研究の背景 コードクローン ソースコード中に存在する一致または類似したコード片
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
川口真司 松下誠 井上克郎 大阪大学大学院情報科学研究科
ソースコードに対する適用可能な修正手順を 可視化するリファクタリング支援手法の提案
プログラム実行履歴を用いたトランザクションファンクション抽出手法
プログラム実行時情報を用いたトランザクションファンクション抽出手法
静的情報と動的情報を用いた プログラムスライス計算法
ギャップを含むコードクローンの フィルタリング手法の提案
類似するコーディングパターンの 利用状況調査ツールの提案
コーディングパターンと キーワードを用いて生成したコードスニペットの推薦
Javaクラスの利用関係を用いた ソフトウェア部品のカテゴリ階層構築法
ソースコードの類似性分析に基づく ソフトウェア保守支援に関する研究
ソースコードの同時修正支援における関数クローン検出ツールの有効性調査
コードクローンに含まれるメソッド呼び出しの 変更度合の分析
コードクローンに含まれるメソッド呼び出しの 変更度合の調査
識別子の命名支援を目的とした動詞-目的語関係の辞書構築
識別子の共起関係に基づく類似コード検索法の提案と 欠陥検出への適用
ソードコードの編集に基づいた コードクローンの分類とその分析システム
動的依存グラフの3-gramを用いた 実行トレースの比較手法
オープンソース開発の履歴情報を用いたコミュニティ検索支援システム
利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成
クローンセットに対する主要編集者の分析法の提案と調査
コードクローン検出ツールを用いた ソースコード分析システムの試作と プログラミング演習への適用
リファクタリング支援のための コードクローンに含まれる識別子の対応関係分析
情報検索技術に基づくベクトル表現と 深層学習を用いたコード片の類似性判定法
コード片のベクトル表現に基づく 大規模コードクローン集合の特徴調査
オープンソース開発支援のための リビジョン情報と電子メールの検索システム
コードクローンの動作を比較するためのコードクローン周辺コードの解析
コードクローンに対する一貫性のない変更に起因する欠陥の検出
Token Comparison Approach to Detect Code Clone-related Bugs
柔軟に変更可能な字句解析機構を持つ コードクローン検出ツールの開発
コードクローン検出に基づくデザイン パターン適用支援手法の提案と実現
バイトコードを単位とするJavaスライスシステムの試作
コードクローン編集者数に着目した開発履歴の分析
コード片に共通した特性を自動抽出する ソースコード閲覧ツールの試作
多様なプログラミング言語に対応可能な コードクローン検出ツール CCFinderSW
Geminiを用いた効果的なコードクローン分析方法
○ 後藤 祥1,吉田 則裕2 ,井岡 正和1 ,井上 克郎1 1大阪大学 2奈良先端科学技術大学院大学
ソフトウェア保守のための コードクローン情報検索ツール
コードクローンの理解支援を目的としたコードクローン周辺コードの解析
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
既存ソフトウェア中の 頻出コード片を用いた コード補完手法の提案
Javaバーチャルマシンを利用した 動的依存関係解析手法の提案
コーディングパターンの あいまい検索の提案と実装
JAVAバイトコードにおける データ依存解析手法の提案と実装
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
コードクローン間の依存関係に基づく リファクタリング支援環境の実装
コードクローンの分布情報を用いた特徴抽出手法の提案
オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法
構造的類似性を持つ半構造化文書における頻度分析
プログラムスライスを用いた凝集度メトリクスに基づく 類似メソッド集約候補の順位付け手法
設計情報の再利用を目的とした UML図の自動推薦ツール
保守請負時を対象とした 労力見積のためのメトリクスの提案
コードクローン間の依存関係に基づく リファクタリング支援手法の提案と実現
プログラムの差分記述を 容易に行うための レイヤー機構付きIDEの提案
クローン検出ツールを用いた ソフトウェアシステムの類似度調査
オープンソースソフトウェアに対する コーディングパターン分析の適用
コードクローン間の依存関係に基づく リファクタリング支援手法の提案と実現
ソフトウェア理解支援を目的とした 辞書の作成法
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
情報処理Ⅱ 2007年12月3日(月) その1.
コードクローン解析に基づく デザインパターン適用候補の検出手法
Geminiを用いた効果的なコードクローン分析方法
識別子の読解を目的とした名詞辞書の作成方法の一試案
Detecting Software Modularity Violations
Presentation transcript:

欠陥検出を目的とした類似コード検索法 吉田則裕,石尾隆,松下誠,井上克郎 大阪大学 大学院情報科学研究科 {n-yosida, ishio, matusita, inoue}@ist.osaka-u.ac.jp

ソフトウェア保守と類似コード 類似コード(コードクローン) ソフトウェアの保守を困難にする要因の1つ コピー&ペーストなどが原因で発生 欠陥が見つかると,その類似コードも検査する必要がある 全ての類似コードを人手で見つけることは難しい まず,背景としまして,ソフトウェア保守を行う際に類似コードが引き起こす問題について述べます. 類似コードは,コードクローンと 類似コード

類似コード検索 対象ファイル群から,選択したコード片に対応するコード片を検索 ファイルA ファイルB ファイルC ファイルD コード片を選択 コード片 CF = ( FromLine, FromColumn, ToLine, ToColumn )で定義される 上図を例に取ると,F( CFA ) = { CFB, CFC, CFD } となる目的関数Fを定義する問題

既存の類似コード検索技術 キーワード検索を用いた方法 コードクローン検出法を用いた方法 入力コード片と検査対象のコード片の間で,キーワードが共通している必要がある 識別子の変化形に対応できない コードクローン検出法を用いた方法 トークンや構文木ベースの検出法 トークン列や構文木が一致している必要がある PDGベースの検出法 スケーラビリティが低い

識別子列の類似性に基づく類似コード検出法 対象識別子列から,入力識別子列の類似部分列を抽出 入力識別子列 Li Ii[0] Ii[1] Ii[2] 対象識別子列 Lt It[0] It[1] It[2] It[3] It[n-1] It[n] 類似部分列の抽出および順位付け 入力識別子列をスライドさせながら類似度を計測 入力識別子Liからなる集合をSi,部分列の識別子からなる集合をSwとすると, 計測した類似度によって,類似部分列を順位付けする 類似度が0のコード片は検索結果に含めない

拡張方法 識別子照合法の拡張 順位付け法の拡張 識別子の変化形が原因で検出精度が低下する可能性がある 単語の共起性に基づいて同義語判定を行う自然言語処理の手法を応用 順位付け法の拡張 検索結果に含まれたコード片に対して,データフロー解析等を行う 解析結果を用いた類似度の定義に変更 検索結果に含まれたコードのみを解析するため,解析コストは比較的小さいと考えられる

まとめと今後の課題 識別子列の類似性に基づく類似コード検出法を提案 今後の課題 対象識別子列から,入力識別子列の類似部分列を抽出 類似度に基づく順位付け 拡張方法 識別子の変化形への対応 データフロー解析等の他の解析法を用いた順位付け法の拡張 今後の課題 提案手法の実装 論文で挙げられているオープンソースソフトウェアの欠陥に適用