複合圧縮度によるソースコード流用の検出

田中 智也 (1051067)


本研究では,2つのソースコード間での流用の検出を目的として,ソースコード圧縮の度合いを評価する新しい尺度「複合圧縮度」を提案すると共に,提案尺度に基づく流用検出の実用性を実験的に評価する.

一般に,重複する文字列を多く含むソースコードを圧縮すると,そのサイズは大きく減少する. この性質を利用して,提案尺度では,対象とする2つのソースコードそれぞれの圧縮後のサイズから,それら2つを連結した状態での圧縮後のサイズを差し引くことで,対象ソースコード間での流用の有無を評価する. なお,圧縮には,辞書式圧縮法であるLZMAアルゴリズムを用いる. CもしくはC++で記述されたオープンソースソフトウェア(Open Source Software: OSS)から作成した190組のソースコードペアに提案尺度を適用した結果, 複合圧縮度を用いたロジスティック回帰モデルにより,適合率0.96,再現率0.79,F値0.87の判別精度が得られた.

近年,商用ソフトウェアの開発では,開発コストの削減やソフトウェアの高信頼性確保を目的として, OSSの流用が増えている. 流用においては,ソースコードの利用や改造に関する規則や制限(ライセンス)の遵守が求められるが,ソースコード管理が煩雑になると確認漏れが起こり,出荷後にライセンス違反が指摘される事例が増えている. 提案尺度は,ソースコード流用の有無をソフトウェア出荷前に確認することを容易にし,意図しない,あるいは,故意のライセンス違反の防止に大きく貢献することが期待される.