FreeBSD Ports Collection における ファイルクローンの検出 大阪大学 情報科学研究科 井上研 博士前期課程1年 佐々木 裕介 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 概要 用語説明(Ports Collection, File Clone) 既存研究(File Clone 検出のきっかけ) 調査実験(度数分布グラフ) まとめ Department of Computer Science, Graduate School of Information Science & Technology, Osaka University FreeBSD Ports Collection • FreeBSD のパッケージプロジェクト集合 – – • ports や cvsup などを用いてダウンロード,インストールが できる オープンソース プロジェクトの特徴 – – プロジェクト内で別のオープンソースライブラリを使っている ケースが存在する 様々な組織が関与 • 例) gcc を管理する団体, firefox を管理する団体, … • • 互いにどのオープンソースライブラリを使っているか気にかける必要がない thunderbird と firefox なら互いに何を使っているか知っているかもしれない Department of Computer Science, Graduate School of Information Science & Technology, Osaka University ファイルクローン プロジェクト間またはプロジェクト内部における2 つ以上のファイルの一致 インデントやコメントは無視 生成要因:プロジェクトをまたがるコピーなど Project A Project B int main() { printf(“Hello mhwse!”); return 0; } コメント除去後の内容 が同じ ※プロジェクト間で一致している場合は便宜的に File Clone の共有と呼ぶ Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 既存研究 – D-CCFinder Ports Collection に含まれる大量のファイルク ローンを発見 トークンベースよりかなり大きな単位でクローンと なっていた ファイル単位で調べても同じ結果が得られる? ファイル単位でクローンについて詳しく調べている 研究は知られていない 今までの研究とは異なる新しい知見が得られるのでは? Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 調査実験 分析対象 ある時点における Ports Collection の .c, .h 1,300,000 ファイル 次の度数分布を調査: 1ファイル当たりのファイルサイズ 1プロジェクト当たりのファイル数 1File Clone当たりのファイル数 1プロジェクト当たりの他プロジェクトと共有のある File Clone 数 (内部の繰り返しは除く) 上記の度数分布がべき乗則に従っていることが判明 各分布に対して線形回帰したときの自由度調整済み寄与率 R*2 を算出 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University PHP4,5 両方で登場す る File Clone 100 (おそらく自動生成されたもの) A 1 number of files 1ファイル当たりのファイルサイズ 50,000 500,000 5,000,000 自由度調整済み寄与率 0.9024 file size (Bytes) Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 200 Real-Time OS のクロスコンパイラが アーキテクチャ毎に用意されたもの 20 B 5 C 1 number of projects 1プロジェクト当たりのファイル数 5 10 50 100 500 5,000 自由度調整済み寄与率 0.8868 number of files inside project Department of Computer Science, Graduate School of Information Science & Technology, Osaka University PHP4,5 両方で登場す る File Clone PHP4,5 両方で2回登場 する File Clone D E 100 ク ロ ー ン セ ッ ト の 組 数 左:PHP5 のみで登場 右:PHP4 のみで登場 F 1 number of file clone sets 1File Clone当たりのファイル数 5 10 50 100 自由度調整済み寄与率 0.8508 クローンの出現する回数 population of file clone set Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 500 右:PHP4 関連 中:bin のユーティリティ 左:PHP5 関連 50 G 5 H 1 number of projects with file clones 1プロジェクト当たりの他プロジェクトと共有 のあるFile Clone 数 5 10 50 100 500 1,000 5,000 自由度調整済み寄与率 0.8263 number of file clones in projects (clones inside project are excluded) Department of Computer Science, Graduate School of Information Science & Technology, Osaka University H:プロジェクト間 File Clone 共有 (a) (b) 共有ファイル数が同じ エッジについては同じ ファイルを共有 これらのプロジェクトは 展開元のファイルがほ ぼ同じ可能性が高い (c) Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 補足:ports extract cd /usr/ports/devel/A make extract 展開された ファイル abc-A フォルダA 下の makefile http://abc.org/ abc.zip 展開された ファイル abc-B フォルダB 下の makefile cd /usr/ports/devel/B make extract Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 考察 べき乗則から外れている File Clone には以下 の特徴が見つかった 展開元が同じファイルが多数見つかった ある意味よく再利用されている? 展開元が同じでもカスタマイズされている個所が存 在する Makefile も解析する必要がある? グラフで見せると小さなプロジェクトが目立たな い Department of Computer Science, Graduate School of Information Science & Technology, Osaka University まとめ Ports Collection内のFile Cloneに関する度数 分布を調査 以下に関してべき乗則が成立 1ファイル当たりのファイルサイズ 1プロジェクト当たりのファイル数 1File Clone当たりのファイル数 1プロジェクト当たりの他プロジェクトと共有のあるFile Clone 数 (内部の繰り返しは除く) 今後はソースファイル展開の方法を工夫 同じ圧縮ファイルが別々の場所に展開された場合 にトレースする Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
© Copyright 2024 ExpyDoc