再利用元 - Software Engineering Laboratory

Download Report

Transcript 再利用元 - Software Engineering Laboratory

再利用が存在するリポジトリ間
におけるファイルの起源検出
井上研究室
川満直弘
1
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
再利用
• ソフトウェア開発では、開発者は別のプロジェ
クトのファイルを再利用をしながら開発を行う
– C言語ではライブラリのファイルを取り込むことが
ある
• 再利用したコードに不具合が含まれているこ
とがある
– 新しいバージョンへの更新が必要になる場合が
ある
2
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
ライブラリの再利用の状況の調査[1]
• オープンソースのライブラリを使用しているプロジェクトに
ついての調査
– 脆弱性を抱えるライブラリを使用しているプロジェクトの割合
– 開発者がどのようにライブラリを管理しているか
• 調査結果
– 123プロジェクト中、84のプロジェクトが脆弱性を抱えるバー
ジョンのライブラリを使用
– 23のプロジェクトで、使用しているライブラリがどのバージョ
ンかという情報が管理されず、失われていた
[1]Pei Xia, Makoto Matsushita, Norihiro Yoshida, and Katsuro Inoue. "Studying
Reuse of Out-dated Third-party Code in Open Source Projects." コンピュータソフ
トウェア 30.4 (2013): pp.98-104.
3
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
再利用に関する情報の欠落
問題の原因:再利用が自動的に記録されない
• プロジェクト内のファイルの更新は、バージョン管理シ
ステムによって記録されている
– ある時点のファイルをリビジョン番号で識別可能
• リポジトリ間での再利用の記録は、どちらのリポジトリ
にも自動的に記録されない
– 何を再利用したのか・その後の更新を取り込んでいるか
リポジトリA
リポジトリB
4
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
提案手法
• プロジェクト中のファイルが、どのようなファイ
ルを再利用したのかを自動的に検出する
• 入力
– 再利用が存在すると思われる2リポジトリ
• 出力
– 起源情報
– 組成情報
5
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
起源情報、組成情報
• 起源情報
– あるファイルのあるリビジョンが、どのファイルのどのリビジョンを再利
用したものか
• 例:G1はF1を起源とする
• 組成情報
– 起源情報に加え、再利用元リポジトリのリビジョン間の変更をどの程
度取り込んだか
• 例:G2はF1にΔの変更を取り込んだもの
ファイルF
再利用元
Δ
F1
F2
F3
組成情報
𝐺2 = 𝐹1 + Δ(100%)
起源情報
ファイルG
再利用先
Δ
G1
G2
6
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
起源情報の検出方法
3つの情報を順番に計算
A) 2つのリポジトリ間で再利用が行われたと思
われるファイルの組
B) 再利用の方向
C) ファイルの組で求めた再利用先の各リビジョ
ンに対応する、再利用先/元のリビジョンの組
7
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
A) 再利用が行われた
ファイルの組の列挙
• 再利用が行われたファイルの組の検出基準
– 入力の2リポジトリのファイルの間で、 任意のリビジョ
ン間について類似度が高い2ファイルの組
– 類似度は、2ファイルの内容からLCS (Longest
Common Subsequence)を元に算出
リポジトリA
リポジトリB
8
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
B) 再利用方向の推定
1. 再利用が行われたファイルの組(F,G)につい
て、Fの全てのリビジョンとGの全てのリビ
ジョンの間の類似度を求める
ファイルF
ファイルG
F1
F2
F3
F4
G1
F5
G2
G3
9
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
B) 再利用方向の推定
2. 類似度の高いリビジョンの組を残す
ファイルF
F1
F2
F3
F4
F5
青線:類似度低
赤線:類似度高
ファイルG
G1
G2
G3
10
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
B) 再利用方向の推定
3. ファイルF、Gについてそれぞれ最も古いコ
ミット時間のリビジョンを残す
ファイルF
F2
F3
F4
F5
青線:類似度低
赤線:類似度高
ファイルG
G1
G2
G3
11
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
B) 再利用方向の推定
4. コミットの時間の新しい側を再利用先ファイ
ル、古い側を再利用元ファイルとする
ファイルF
ファイルG
F2
G1
12
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
B) 再利用方向の推定
4. コミットの時間の新しい側を再利用先ファイ
ル、古い側を再利用元ファイルとする
ファイルF
再利用元
F2
G1の方が
F2より新しい
ファイルG
再利用先
再利用
G1
13
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
C) 再利用元のリビジョンの推定
• 再利用先のファイルの各リビジョンについて
再利用元のリビジョンを推定する
• 推定基準
– 再利用元のファイルの全てのリビジョンの中から、
最も類似度の高いもの
ファイルF
再利用元
ファイルG
再利用先
F1
F2
F3
F4
G1
F5
G2
G3
14
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
C) 再利用元のリビジョンの推定
• 再利用先のファイルの各リビジョンについて
再利用元のリビジョンを推定する
• 推定基準
– 再利用元のファイルの全てのリビジョンの中か
ら、最も類似度の高いもの
ファイルF
再利用元
ファイルG
再利用先
F1
F2
F3
F4
G1
F5
G2
G3
15
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
C) 再利用元のリビジョンの推定
• 再利用先のファイルの各リビジョンについて
再利用元のリビジョンを推定する
• 推定基準
– 再利用元のファイルの全てのリビジョンの中から、
最も類似度の高いもの
ファイルF
再利用元
ファイルG
再利用先
F1
F2
F3
F4
G1
F5
G2
G3
16
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
C) 再利用元のリビジョンの推定
• 再利用先のファイルの各リビジョンについて
再利用元のリビジョンを推定する
• 推定基準
– 再利用元のファイルの全てのリビジョンの中から、
最も類似度の高いもの
ファイルF
再利用元
ファイルG
再利用先
F1
F2
F3
F4
G1
F5
G2
G3
17
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
C) 再利用元のリビジョンの推定
• 再利用先のファイルの各リビジョンについて
再利用元のリビジョンを推定する
• 推定基準
– 再利用元のファイルの全てのリビジョンの中から、
最も類似度の高いもの
ファイルF
再利用元
ファイルG
再利用先
F1
F2
F3
F4
G1
F5
G2
G3
18
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
組成情報の計算
再利用元での更新内容が再利用先に取り込まれている割
合を計算し出力する
• 更新内容を行単位で確認
Δ1
追加
A2
Δ2
Δ3
Δ4
AAA
BBB
B1
追加
AAA
BBB
CCC
DDD
B1=A2から見て2行追加
=Δ4についての変更の 50% (4行中2行)の取り込み
•
同様に Δ1, Δ2, Δ3 がどれだけ含まれるかもそれぞれ計算
19
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
起源情報の評価
※組成情報についての調査結果は時間の都合上省略します
• 起源情報を構成する以下の項目について正しく検
出できるかの確認
– 再利用元/先のファイルの対応
– 再利用の方向
– 再利用元のリビジョン
• 記録と結果が同一内容の連続する範囲に含まれている場合、正
しいとする
コミットメッセージに
記録されていたリビジョン
出力されたリビジョン
A
B
C
C
C
20
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
実験の対象
• 再利用元
libpng(グラフィック)
• 再利用先
fs2open(ゲームエンジン)
• fs2openリポジトリのコミットメッセージに、3回
libpngが取り込まれたという記述
– 延べ57ファイルがコピー、あるいは再利用元に追
随して変更されていた
– 再利用の過程において、改行文字だけが変更さ
れている
21
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
実験の結果(1/2)
正
誤
ファイルの対応
57
0
再利用の方向
57
0
リビジョン
44
13
• 3回のコミットのすべてのファイルを検出
– ファイルの対応関係、再利用の方向は正確
– リビジョンの対応関係に誤りがあった
22
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
実験の結果(2/2)
正
誤
ファイルの対応
57
0
再利用の方向
57
0
リビジョン
44
13
• リビジョンの対応を誤った原因
– 同一内容のファイルが複数のリビジョンに記録されていたため
– ファイルが一度変更され、その変更が取り消されたとき、変更以前の
リビジョンのほうを出力してしまった
コミットメッセージに
記録されていたリビジョン
出力されたリビジョン
A
B
変更
A
A
変更の取り消し
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
A
23
まとめ
• 再利用元の起源情報、組成情報を検出する手法
を提案した
– ファイルの対応と方向は、正しく結果を得られた
– リビジョンの対応が取れたのは57件中44件だった
– 組成情報については更新の取り込みを誤検出するこ
とが多かった (本発表では省略)
• 今後の課題
– 組成情報の計算方法の改善
– 再利用先のファイルの変更が、再利用元のファイル
へ取り込まれる場合の対応
24
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University