ソースコード出典調査のための コードクローン情報収集システムの試作 井上研究室 M2 佐々木 裕介 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 1 背景 企業ではオープンソースソフトウェア(OSS)の 再利用が行われている 再利用には様々なリスクを伴う ライセンスに違反して利用 利用したソースコードファイルにバグが混入 以下の情報が必要 ライセンス 開発元 利用しているソースコードファイルの保守状況 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 2 OSS 間における再利用 コードクローン関係 ライセンス 違反 波及 コードクローン関係 再利用 再利用 組織 A 組織 B ファイルの更新日時が 最も古い 起源 出典調査 組織 C 入手元 ファイルのコード部分が 完全に一致 手元にあるファイルの入手元と起源を特定すること Web 上のコードクローン情報を利用 コードクローン情報 与えられたファイルと類似したファイル 類似したファイルが存在する場所(URL) 出典調査には多くのコードクローン情報が必要 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 3 本研究の目的 コードクローン情報収集システムの開発 入力されたファイルに対するコードクローン情報を 収集 Web 上からコードクローン情報を効率よく取得 既存のソースコード検索システムを利用 SPARS/R Google Code Search Koders Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 4 コードクローン情報収集システム 出力:コードクローン情報 Type A 入力:ファイル http://unicore.cvs.sourceforge.net/ viewvc/unicore/unigrids/ …/AttributedQNameType.java AttributedQNameType.java http://unicore.cvs.sourceforge.net/ viewvc/unicore/unicore6/ …/AttributedQNameType.java Type A: 与えられたファイルとコード部分が 完全に一致するファイル Type B: 一部の識別子や定数などを除いて コード部分が一致するファイル 入手元 Type B なし Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 5 コードクローン情報収集システム コードクローン情報収集システム 入力 出力 コードクローン 検出 単語抽出 ソースコード ファイル コードクローン情報 ファイル ファイルの場所(URL) 結果が10以上得られるまで繰り返し クエリ生成 Type A 検索 ファイル ファイルの場所(URL) Type B 検索クエリ SPARS/R ファイルとそのURL ソースコード検索システム Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 6 単語抽出 入力されたファイル 例)AttributedQNameType.java apache message addressing attributedqnametype serializable apache encoding simpletype javax namespace … コード部分から単語を抽出 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 7 単語のランク付け apache message addressing attributedqnametype serializable apache encoding simpletype javax namespace … No. 単語 出現頻度 1 _value 18 2 apache 11 2 qname 11 4 namespace 10 4 javax 10 6 attributedqna metype 9 6 typedesc 9 8 elemfield 6 9 __equalscalc 5 … … … 出現頻度の高い順にランク付け Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 8 クエリ生成と検索 1/2 コードクローン情報収集システム No. 単語 ランク値 1 _value 18 生成されるクエリ (AND 検索) 2 apache 11 2 qname 11 4 namespace 10 4 javax 10 6 attributedqna metype 9 __equalscalc+__hashcodecalc +_equals+_hashcode+_javatype +_value+_xmltype+apache +attributedqnametype+description +elemfield+encoding+get_value+javax +namespace+qname+string+typedesc 6 typedesc 9 … … … 18 other … 検索 SPARS/R 全て利用(最大19) 単語を1つ減らして再検索 (10以上見つかるまで繰り返し) Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 9 クエリ生成と検索 2/2 コードクローン情報収集システム No. 単語 ランク値 1 _value 18 2 apache 11 生成されるクエリ (AND 検索) 2 qname 11 _value+apache+namespace+qname 4 namespace 10 4 javax 10 6 attributedqna metype 9 6 typedesc 9 8 elemfield 6 9 __equalscalc 5 … … … 単語数 4 検索 SPARS/R 検索終了 …(以下省略) Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 10 ファイルとURLの取得 コードクローン情報収集システム http://.../unigrids/ …/AttributedQNameType.java SPARS/R 取得 取得 http://.../unicore6/ …/AttributedQNameType.java …(以下省略) …(以下省略) Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 11 コードクローン検出 コードクローン情報 検索結果 (URL) (URL) TypeA コードクローン検出 (URL) (URL) … 入力 FCFinder 出力 CCFinder TypeB 入力 出力 入力されたファイル AttributedQNameType.java なし 除外 … 類似でないファイル Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 12 システムの試作 単語の抽出 コード部分から抽出(デフォルト) コメント文から抽出 単語のランク付け 出現頻度(デフォルト) 共起する単語の種類数 ファイル名を用いた検索クエリも利用可能 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 13 適用事例 Type A ChangePermissions.java http://unicore.cvs.sourceforge.net/viewvc/unicore/ unigrids/core/unicoregs/core/src/org/unigrids/ services/atomic/sms/ChangePermissions.java 入手元 Wed, 03 May 2006 17:03:38 GMT http://unicore.cvs.sourceforge.net/viewvc/ unicore/unicore6/unicoregs/src/org/unigrids/ services/atomic/sms/ChangePermissions.java 入手元 出典調査 1.システムへファイルを入力 2.システムからコードクローン情報を取得 3.Type A を入手元と確定 4.各ファイルの更新日時を取得 5.最も古いものを起源と確定 Fri, 28 Jul 2006 11:49:32 GMT Type B http://unicore.cvs.sourceforge.net/viewvc/unicore/ unigrids/core/unicoregs/src/org/unigrids/services/ atomic/sms/ChangePermissions.java 起源 Fri, 17 Feb 2006 13:23:42 GMT Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 14 適用事例 – 追加調査 http://unicore.cvs.sourceforge.net/viewvc/unicore/ unigrids/core/unicoregs/src/org/unigrids/services/ atomic/sms/ChangePermissions.java 起源 unicoreGS 1.3 リリース Fri, 17 Feb 2006 13:23:42 GMT 変更 http://unicore.cvs.sourceforge.net/viewvc/unicore/ unigrids/core/unicoregs/core/src/org/unigrids/ services/atomic/sms/ChangePermissions.java 入手元 Wed, 03 May 2006 17:03:38 GMT http://unicore.cvs.sourceforge.net/viewvc/ unicore/unicore6/unicoregs/src/org/unigrids/ services/atomic/sms/ChangePermissions.java 入手元 unicoreGS 1.4.1リリース プロジェクト 丸ごとコピー unicore6 プロジェクト作成 Fri, 28 Jul 2006 11:49:32 GMT 出典調査を行うことで さらにファイル再利用の過程まで明らかになった Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 15 まとめ OSS の再利用にはコードクローン情報が必要 コードクローン情報を短時間で集めるのは困難 コードクローン情報を効率的に収集するシステ ムを試作 Web 上のソースコード検索システムを利用 適用実験 試作したシステムを使い実際に出典調査を行うこと ができた Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 16
© Copyright 2024 ExpyDoc