欠陥検出を目的とした 類似コード検索法 吉田則裕,石尾隆,松下誠,井上克郎 大阪大学 大学院情報科学研究科 {n-yosida, ishio, matusita, inoue}@ist.osaka-u.ac.jp Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 1 ソフトウェア保守と類似コード 類似コード(コードクローン) ソフトウェアの保守を困難にする要因の1つ コピー&ペーストなどが原因で発生 欠陥が見つかると,その類似コードも検査する必要 がある 全ての類似コードを人手で見つけることは難しい 類似コード Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 2 類似コード検索 対象ファイル群から,選択したコード片に対応 するコード片を検索 ファイルA ファイルB ファイルC ファイルD コード片 を選択 コード片 CF = ( FromLine, FromColumn, ToLine, ToColumn )で定義される 上図を例に取ると,F( CFA ) = { CFB, CFC, CFD } となる目的関数Fを定義する問題 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 3 既存の類似コード検索技術 キーワード検索を用いた方法 入力コード片と検査対象のコード片の間で,キーワ ードが共通している必要がある 識別子の変化形に対応できない コードクローン検出法を用いた方法 トークンや構文木ベースの検出法 トークン列や構文木が一致している必要がある PDGベースの検出法 スケーラビリティが低い Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 4 識別子列の類似性に基づく類似コード検出法 対象識別子列から,入力識別子列の類似部分列を抽出 入力識別子列 Li Ii[0] Ii[1] Ii[2] 対象識別子列 Lt It[0] It[1] It[2] It[3] It[n-1] It[n] 類似部分列の抽出および順位付け 入力識別子列をスライドさせながら類似度を計測 入力識別子Liからなる集合をSi,部分列の識別子からなる集合をSwとすると, Similarity(Si, Sw) 2 Si Sw Si Sw 計測した類似度によって,類似部分列を順位付けする 類似度が0のコード片は検索結果に含めない Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 5 拡張方法 識別子照合法の拡張 識別子の変化形が原因で検出精度が低下する可能性があ る 単語の共起性に基づいて同義語判定を行う自然言語処理 の手法を応用 順位付け法の拡張 検索結果に含まれたコード片に対して,データフロー解析等 を行う 解析結果を用いた類似度の定義に変更 検索結果に含まれたコードのみを解析するため,解析コスト は比較的小さいと考えられる Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 6 まとめと今後の課題 識別子列の類似性に基づく類似コード検出法を提案 対象識別子列から,入力識別子列の類似部分列を抽出 類似度に基づく順位付け 拡張方法 識別子の変化形への対応 データフロー解析等の他の解析法を用いた順位付け法の拡張 今後の課題 提案手法の実装 論文で挙げられているオープンソースソフトウェアの欠陥に 適用 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 7
© Copyright 2024 ExpyDoc