コードクローンの長さに基づく プログラム盗用確率の実験的算出

Slides:



Advertisements
Similar presentations
API 呼び出し列の差分を利用した Android アプリケーション比較ツールの 試作 井上研究室 神田 哲也.
Advertisements

シーケンス図の生成のための実行履歴圧縮手法
XHTML構文検証手法における スクリプト要素の静的解析アルゴリズム
国内線で新千歳空港を利用している航空会社はどこですか?
剽窃 他人の作品や論文を盗んで,自分のものとして発表すること. プログラムが剽窃される事例もある. Aさんのプログラム Xさんのプログラム
研究の背景 コードクローン ソースコード中に存在する一致または類似したコード片
EMアルゴリズム クラスタリングへの応用と最近の発展
ソースコード流用の コードクローンメトリクスに基づく検出手法
川口真司 松下誠 井上克郎 大阪大学大学院情報科学研究科
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
プログラム実行履歴を用いたトランザクションファンクション抽出手法
プログラム実行時情報を用いたトランザクションファンクション抽出手法
類似するコーディングパターンの 利用状況調査ツールの提案
コードクローンに含まれるメソッド呼び出しの 変更度合の分析
コードクローンに含まれるメソッド呼び出しの 変更度合の調査
動的依存グラフの3-gramを用いた 実行トレースの比較手法
第10回関数 Ⅱ (ローカル変数とスコープ).
インラインスクリプトに対するデータフロー 解析を用いた XHTML 文書の構文検証
利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成
クローンセットに対する主要編集者の分析法の提案と調査
重複コードと非重複コードにおける 修正頻度の比較
第5章 特徴の評価とベイズ誤り確率 5.5 ベイズ誤り確率の推定法 [1] 誤識別率の偏りと分散 [2] ベイズ誤り確率の上限および下限
社会シミュレーションのための モデル作成環境
コードクローン検出ツールを用いた ソースコード分析システムの試作と プログラミング演習への適用
リファクタリング支援のための コードクローンに含まれる識別子の対応関係分析
動的データ依存関係解析を用いた Javaプログラムスライス手法
オープンソース開発支援のための リビジョン情報と電子メールの検索システム
治療用フィルムによる線量分布測定の 基礎的検討Ⅱ
コードクローンの動作を比較するためのコードクローン周辺コードの解析
25. Randomized Algorithms
コードクローンに対する一貫性のない変更に起因する欠陥の検出
Token Comparison Approach to Detect Code Clone-related Bugs
柔軟に変更可能な字句解析機構を持つ コードクローン検出ツールの開発
藤田保健衛生大学医学部 公衆衛生学 柿崎 真沙子
プログラム実行履歴を用いたコードクローン検出手法
Webコミュニティ概念を用いた Webマイニングについての研究 A study on Web Mining Based on Web Communities 清水 洋志.
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
プログラム理解におけるThin sliceの 統計的調査による有用性評価
バイトコードを単位とするJavaスライスシステムの試作
コードクローンのメトリクス値と 開発者の相関の調査
多様なプログラミング言語に対応可能な コードクローン検出ツール CCFinderSW
コードクローンの理解支援を目的としたコードクローン周辺コードの解析
コンパイラ 2011年10月20日
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
コーディングパターンの あいまい検索の提案と実装
JAVAバイトコードにおける データ依存解析手法の提案と実装
わかりやすいパターン認識 第7章:部分空間法  7.1 部分空間法の基本  7.2 CLAFIC法                  6月13日(金)                  大城 亜里沙.
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
コードクローン間の依存関係に基づく リファクタリング支援環境の実装
オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法
メトリクス値の変化に基づく コードクローンの編集傾向分析
構造的類似性を持つ半構造化文書における頻度分析
プログラムスライスを用いた凝集度メトリクスに基づく 類似メソッド集約候補の順位付け手法
設計情報の再利用を目的とした UML図の自動推薦ツール
保守請負時を対象とした 労力見積のためのメトリクスの提案
クローン検出ツールを用いた ソフトウェアシステムの類似度調査
オープンソースソフトウェアに対する コーディングパターン分析の適用
メソッドの同時更新履歴を用いたクラスの機能別分類法
藤田保健衛生大学医学部 公衆衛生学 柿崎 真沙子
プログラミング言語論 第10回 情報工学科 篠埜 功.
4.プッシュダウンオートマトンと 文脈自由文法の等価性
欠陥検出を目的とした類似コード検索法 吉田則裕,石尾隆,松下誠,井上克郎 大阪大学 大学院情報科学研究科
わかりやすいパターン認識 第6章 特徴空間の変換 6.5 KL展開の適用法 〔1〕 KL展開と線形判別法 〔2〕 KL展開と学習パターン数
確率的フィルタリングを用いた アンサンブル学習の統計力学 三好 誠司 岡田 真人 神 戸 高 専 東 大, 理 研
コードクローン解析に基づく デザインパターン適用候補の検出手法
確率的フィルタリングを用いた アンサンブル学習の統計力学 三好 誠司 岡田 真人 神 戸 高 専 東 大, 理 研
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
識別子の読解を目的とした名詞辞書の作成方法の一試案
ベイジアンネットワークと クラスタリング手法を用いたWeb障害検知システムの開発
Presentation transcript:

コードクローンの長さに基づく プログラム盗用確率の実験的算出 †奈良先端科学技術大学院大学 情報科学研究科 ‡大阪大学 大学院情報科学研究科 ○岡原聖†  真鍋雄貴‡  山内寛己† 門田暁人†  松本健一†  井上克郎‡ “コードクローンの長さに基づくプログラム盗用確率の実験的算出“と題しまして 奈良先端科学技術大学院大学の岡原が発表させていただきます ソフトウェアサイエンス研究会 2008年12月18日

コードクローンの長さに基づく プログラム盗用確率の実験的算出 背景 オープンソースソフトウェアの普及に伴い, プログラム盗用が問題となっている エプソンコーワが提供しているLinux向けのプリンタ ドライバでGPL違反を起こした事例 AppStoreで提供されているiPhoneアプリ「Mocha Remote Desktop」がGPL違反していた事例 プログラム盗用を検出する技術が必要とされる. 近年,オープンソースソフトウェアの普及に伴い,ライセンスに従わないプログラム盗用が問題となっています 具体的な事例としましては,エプソンコーワがLINUX向けのプリンタドライバでGPL違反を起こしていた事例や, つい最近ではAppStoreで提供されている「Mocha Remote Desktop」というiPhoneアプリがGPL違反をしていた事例があります このような事例をプログラム盗用と検出する技術が必要となります App Storeで提供されているiPhoneアプリにGPL違反が発覚: “http://slashdot.jp/it/article.pl?sid=08/09/24/0914203” コードクローンの長さに基づく プログラム盗用確率の実験的算出 2008年12月18日

プログラム盗用検出の既存手法 既存手法の問題点 盗用の「疑いあり」というのが曖昧である. どの程度の確からしさがあるのか不明. ソフトウェアバースマーク ソフトウェアが持つプログラムの特徴を抽象化して 表現したもの バースマークが類似しているプログラムは盗用の疑い ありと判断する. コードクローン プログラムテキスト中の一致または類似した部分のこと プログラム間にまたがったクローンが多くみられる場合に盗用の疑いありと判断する. 既存手法の問題点 盗用の「疑いあり」というのが曖昧である. どの程度の確からしさがあるのか不明. プログラム盗用を検出する既存手法として,ソフトウェアバースマークを用いた手法や. コードクローンを用いた手法が提案されています. ソフトウェアバースマークとはソフトウェアが持つプログラムの特徴を抽象化して表現したものです 盗用元となったソフトウェアと,盗用を行ったソフトウェアのバースマークを検出し比較することで盗用の疑いを判断します コードクローンとはプログラムテキスト中の一致または類似した部分のことです 異なるソフトウェア間のクローンを検出し,クローンが多くみられる場合にプログラム盗用の疑いありと判断します 【【【アニメ】】】 ただ,既存手法における問題点として,盗用の「疑いあり」というのが曖昧で,どの程度の確からしさがあるのかが不明という問題点があります コードクローンの長さに基づく プログラム盗用確率の実験的算出 2008年12月18日

コードクローンの長さに基づく プログラム盗用確率の実験的算出 目的とアプローチ 目的 プログラム盗用の有無を確率的に求める. アプローチ プログラム間にまたがるクローンの長さを盗用の根拠とする 多数のプログラムを題材として,実験的に「盗用確率」を求める 盗用と流用は区別しない 本研究では,プログラム盗用の有無を確率的に求めることを目的としています アプローチとしては,プログラム間にまたがるクローンの長さを根拠とします. また,多数のプログラムをもちいて,実験的に「盗用確率」を求めていきます. そして最後に,盗用と流用の区別はしません.これは盗用と流用を技術的に区別することは難しいためです. コードクローンの長さに基づく プログラム盗用確率の実験的算出 2008年12月18日

盗用(流用)でないクローンの実態を まず明らかにする必要がある. 仮説 盗用(流用)でないクローンの実態を まず明らかにする必要がある. どの程度の長さのクローンであれば, 定型処理や偶然により発生するか. ↓ 定型処理や偶然では起こりえないような 長さのクローンが見つかったならば,盗用 (流用)が行われたと判断できる. 仮説1 プログラム間で見つかるクローンが長いほど盗用(流用)が行われた可能性が高い. 仮説2 短いクローンは,盗用(流用)の有無にかかわらず生じる. 定型処理 偶然の一致など 本研究では2つの仮説をたてました。 ひとつ目の仮説は「プログラム間で見つかるクローンが長いほど盗用(流用)が行われた可能性が高い.」というもの。 二つ目の仮説は「短いクローンは,盗用(流用)の有無にかかわらず生じる.」ものです これは、クローンの発生理由として定型処理,偶然の一致などがあるためです 【【【アニメ】】】 この仮説2から,まず,盗用または流用ではないクローンの実態を明らかにする必要があります. 具体的には,定型処理や偶然の一致によって発生するクローンはどの程度の長さかを求めます. これを求めることで,定型処理や偶然では起こり得ない長さのクローンが検出されたとき,盗用または流用が行われたと判断できると考えました. コードクローンの長さに基づく プログラム盗用確率の実験的算出 2008年12月18日

実験目的 定型処理などの理由で発生するクローンの長さと検出確率の関係を明らかにする. 盗用(流用)確率 = 1-定型クローン検出確率 この検出確率を「定型クローン検出確率」とする 盗用(流用)確率 = 1-定型クローン検出確率 とみなす. この仮説に基づき,定型処理などの理由で発生するクローンの長さと検出確率の関係を調査することを実験目的としています. この検出確率のことを定型クローン検出確率と呼ぶこととします 【【【アニメ】】】 実験を行うと,おそらくこのような曲線が描け,ある一定以上の長さのクローンは検出されにくいことが考えられます. 検出されにくいようなクローンが検出されるということは,プログラム盗用の確率が高いとみなしていきます. 簡単には,単純に1から定型クローン検出確率を引いたものを盗用確率とみなします。 次から,今回実験を行った環境について説明します コードクローンの長さに基づく プログラム盗用確率の実験的算出 2008年12月18日

コードクローンの長さに基づく プログラム盗用確率の実験的算出 実験環境 クローン検出ツール CCFinderX[1] 実験対象 GPLのオープンソースソフトウェア100件 開発言語:CまたはC++ ドメイン:Audio, Game, Securityなど 実験環境は以下の通りになっています. コードクローン検出ツールにCCFinderXを使用しました. 実験対象としてはGPLのオープンソースソフトウェアを100件を使用しています. これらのオープンソースソフトウェアはC言語またはC++で開発され,ソフトウェアのドメインはAudio,Game,Securityなど多様なものとなっています. [1] CCFinderX:” http://www.ccfinder.net/ccfinderx-j.html” コードクローンの長さに基づく プログラム盗用確率の実験的算出 2008年12月18日

コードクローンの長さに基づく プログラム盗用確率の実験的算出 実験環境 クローン検出ツール CCFinderX[1] 実験対象 GPLのオープンソースソフトウェア100件 開発言語:CまたはC++ ドメイン:Audio, Game, Securityなど まず,コードクローン検出ツールであるCCFinderXの説明を行うことで,今回の「コードクローンの長さ」とは何かを説明します. [1] CCFinderX:” http://www.ccfinder.net/ccfinderx-j.html” コードクローンの長さに基づく プログラム盗用確率の実験的算出 2008年12月18日

コードクローンの長さに基づく プログラム盗用確率の実験的算出 CCFinderXのクローン検出手順 トークン解析 プログラミング言語の字句規則に従ってトークンに分割する トークン変換 変数(p),定数(i),型(t)といった種類ごとにトークンを置換する マッチング 一致する部分列を探して,クローンとして認識する ... ... ... ... } x = b - c ; if ( while > ) n { y = ; ----------- ------------ CCFinderXのコードクローン検出手順は x = y - z ; if ( x > ) n = 1 ; z = ; コードクローンの長さに基づく プログラム盗用確率の実験的算出 2008年12月18日

コードクローンの長さに基づく プログラム盗用確率の実験的算出 CCFinderXのクローン検出手順 トークン解析 プログラミング言語の字句規則に従ってトークンに分割する トークン変換 変数(p),定数(i),型(t)といった種類ごとにトークンを置換する マッチング 一致する部分列を探して,クローンとして認識する ... ... ... ... } x = b - c ; if ( while > ) n { } x = b - c ; if ( while > ) n { y = x - z ; if ( > ) n 1 y = ; ----------- ------------ x = y - z ; if ( x > ) n = 1 ; z = ; コードクローンの長さに基づく プログラム盗用確率の実験的算出 2008年12月18日

コードクローンの長さに基づく プログラム盗用確率の実験的算出 CCFinderXのクローン検出手順 トークン解析 プログラミング言語の字句規則に従ってトークンに分割する トークン変換 変数(p),定数(i),型(t)といった種類ごとにトークンを置換する マッチング 一致する部分列を探して,クローンとして認識する ... ... ... ... } p = - ; if ( while > i ) { p = i - ; if ( > ) } x = b - c ; if ( while > ) n { } x = b - c ; if ( while > ) n { y y = x - z ; if ( > ) n 1 = ; ----------- ------------ x = y - z ; if ( x > ) n = 1 ; z = ; コードクローンの長さに基づく プログラム盗用確率の実験的算出 2008年12月18日

コードクローンの長さに基づく プログラム盗用確率の実験的算出 CCFinderXのクローン検出手順 トークン解析 プログラミング言語の字句規則に従ってトークンに分割する トークン変換 変数(p),定数(i),型(t)といった種類ごとにトークンを置換する マッチング 一致する部分列を探して,クローンとして認識する ... ... ... ... } p = - ; if ( while > i ) { } p = - i ; if ( while > ) { p = i - ; if ( > ) p = i - ; if ( > ) } x = b - c ; if ( while > ) n { } x = b - c ; if ( while > ) n { y = x - z ; if ( > ) n 1 y = ; ----------- ------------ そして最後に,トークンの一致する部分列を探してクローンとして認識します. こんかい,このトークンの数をクローンの長さとしました. x = y - z ; if ( x > ) n = 1 ; z = ; コードクローンの長さに基づく プログラム盗用確率の実験的算出 2008年12月18日

コードクローンの長さに基づく プログラム盗用確率の実験的算出 CCFinderXのクローン検出手順 トークン解析 プログラミング言語の字句規則に従ってトークンに分割する トークン変換 変数(p),定数(i),型(t)といった種類ごとにトークンを置換する マッチング 一致する部分列を探して,クローンとして認識する トークン数をクローン長とする ... ... ... ... } p = - i ; if ( while > ) { } p = - ; if ( while > i ) { p = i - ; if ( > ) p = i - ; if ( > ) } x = b - c ; if ( while > ) n { } x = b - c ; if ( while > ) n { } x = b - c ; if ( while > ) n { y = x - z ; if ( > ) n 1 y y = x - z ; if ( > ) n 1 = ; ----------- ------------ x = y - z ; if ( x > ) n = 1 ; z = ; コードクローンの長さに基づく プログラム盗用確率の実験的算出 2008年12月18日

コードクローンの長さに基づく プログラム盗用確率の実験的算出 実験環境 クローン検出ツール CCFinderX[1] 実験対象 GPLのオープンソースソフトウェア100件 開発言語:CまたはC++ ドメイン:Audio, Game, Securityなど 次に,実験対象について説明します. 繰り返しますが,対象としてオープンソースソフトウェアを100件使用しました. 開発言語はC言語またはC++となっています. こんかい,プログラム盗用以外の理由によって検出されるコードクローンの長さと検出確率について調査を行うので, 【【【アニメ】】】 プログラム盗用の有無の確認をする必要があります. このプログラム盗用の有無の確認手順について説明していきます. プログラム盗用(流用)の有無の確認 [1] CCFinderX:” http://www.ccfinder.net/ccfinderx-j.html” コードクローンの長さに基づく プログラム盗用確率の実験的算出 2008年12月18日

コードクローンの長さに基づく プログラム盗用確率の実験的算出 プログラム盗用(流用)の確認手順 CCFinderXを用いてクローン検出 検出される最小のクローン長:30 検出されたクローンを目視で確認 クローン長の長いクローンから確認 クローン長が80未満のクローンは数が多すぎたため 未確認 プログラム盗用(流用)のあった54件のソフトウェアを除外 実験対象となるソフトウェアは46件 まず,CCFinderXを用いてコードクローンを検出します.このとき,検出される最小のコードクローン長は30としています.これをminをよびます 次に,検出されたコードクローンを目視で確認します.その際に,コードクローン長の長いものから確認しています. また,今回の実験では80未満のものは数が多すぎたため、80未満のクローンは未確認となっています. 最後に,プログラム盗用のあったソフトウェアを除外し,実験対象となるソフトウェアを絞り込みます. 今回は実験対象となったソフトウェアは46件でした. コードクローンの長さに基づく プログラム盗用確率の実験的算出 2008年12月18日

プログラム盗用(流用)とみなした一例 コメントの内容を確認することで ライセンスに従っていることを確認 処理の記述形式を確認 -------------- xalloca_free (ctx.y); xalloca_free (ctx.next); xalloca_free (ctx.notfirst); xalloca_free (ctx.oddflag); xalloca_free (x); -------------- free(e_inv.c); free(e_res.c); free(e_con.c); free(e_post.c); free(e_fil.c); 今回除去したコードクローンの一例です. 【【【アニメ】】】 実験対象に,GPLのソフトウェアを使用しているため. コメントの内容が同様であることや 処理の記述形式を確認することでプログラム盗用(流用)としてみなしています. このようにして,プログラム盗用(流用)のあったソフトウェアを除去した後実験を行います. 次から,実験手順について説明します. 引数の数が同じため検出されている コードクローンの長さに基づく プログラム盗用確率の実験的算出 2008年12月18日

コードクローンの長さに基づく プログラム盗用確率の実験的算出 実験手順 2つのソフトウェアPi, Pj (i≠j)間のクローンの最大の長さを調べる. 全てのソフトウェアの組み合わせPi, Pjに対して1.の操作を繰り返す 定型クローン検出確率を算出し,グラフを作成する. 定型クローン検出確率 まず,2つのソフトウェア間のクローンの最大の長さを調べます. その操作をすべてのソフトウェアの組合せに対して繰り返し,すべてのデータを取得します. そして,定型クローン検出確率を算出しグラフを作成します. 定型クローン検出確率は次の式で得られます クローン長L以上のクローン検出数をソフトウェアの全組合せ数で割ったものというシンプルな式としました. ソフトウェア数: 検出するクローンの最低長さ: クローン長 以上のクローン検出数: コードクローンの長さに基づく プログラム盗用確率の実験的算出 2008年12月18日

ソフトウェア数46件の実験結果 クローン長80未満で プログラム間で発生するクローンの 約95%が検出されている 約95%の確率で プログラム盗用と考えられる クローン長80未満で プログラム間で発生するクローンの 約95%が検出されている クローン長が長くなるほど 検出確率が低くなっている 約5%でクローン長60以上のクローンが検出される ソフトウェア数46件の時の実験結果です.X軸がコードクローン長,Y軸がコードクローンの検出確率のグラフとなっています. 例を踏まえて,グラフの読み方について説明します. クローン長が30の時に注目すると,クローン検出確率が45%となっていることがわかります. これは,長さが30以上のクローンが検出される確率が45%ということです. ちなみに,長さが30未満のクローンが5割以上検出されているため長さが30の時のクローン検出確率が約45%程度になっています. 【【【アニメ】】】 この実験結果から,クローン長が80未満で非常に多くのクローンが検出されていることがわかります. 本実験では約95%が検出されていることがわかります. その一方で,クローン長80以上ではクローン長が長くなるほどクローンが検出しにくいということがわかります. また,最初のほうで述べましたが,このように数パーセントでクローンが検出されるということは, 逆を言うと,高い確率でプログラム盗用と言えると考えられます. また,ソフトウェア数が変化したとしても,この結果が変化しないことを確認するために,ソフトウェア数を減少させて調査しました. コードクローンの長さに基づく プログラム盗用確率の実験的算出 2008年12月18日

ソフトウェア数25件の実験結果 2つの実験結果でほぼ同じ値をとることを確認 クローン長とクローン検出確率の関係は ソフトウェア数に依存しないと考えられる 本実験で検出された 最大のクローン長:200 これが,ソフトウェア数25件の実験結果です. X軸,Y軸は先ほどと同じになっています. 46件の時と同様に,クローン長が80未満のときにクローンが多く検出され, それ以上の時にはあまり検出されていないことがわかります. 【【【アニメ】】】 また,2つの実験結果でほぼ同じ値をとることを確認できたことから クローン長とクローン検出確率の関係はソフトウェアすうに依存しないのではないかと考えられます 本実験で検出された,最大定型クローンはこのようなものとなっています コードクローンの長さに基づく プログラム盗用確率の実験的算出 2008年12月18日

コードクローンの長さに基づく プログラム盗用確率の実験的算出 長い定型クローン 引数の形が同様のものがクローンとして認識され、連続して記述されているものでした。 このような繰り返しによるクローンが検出されてしまうのは, こんかいトークン単位で検出を行うクローン検出ツールを用いたためです. コードクローンの長さに基づく プログラム盗用確率の実験的算出 2008年12月18日

コードクローンの長さに基づく プログラム盗用確率の実験的算出 実験結果の近似式 プログラム盗用と判断する確率を算出するための近似式を算出 残差平方平均から近似式の精度を確認 ソフトウェア数46件 近似式 残差平方平均 ただ,グラフだけでは実際にプログラム盗用を判断する数値が求められないため, 近似式を求めることで,クローン長からクローンの検出確率を求めることを考えました. この近似式の誤差の程度を確認するために,残差平方平均を求めました. 残差平方平均の値は0.000101と小さく,近似式の誤差は非常に小さいと確認できました. コードクローンの長さに基づく プログラム盗用確率の実験的算出 2008年12月18日

コードクローンの長さに基づく プログラム盗用確率の実験的算出 まとめと今後の課題 まとめ プログラム盗用(流用)の判断基準を明確にすることを 目的とした プログラム盗用(流用)のないソフトウェアのクローン長とクローン検出確率の関係を調査した 今後の課題 近似式についての検討を行う ソフトウェア数を増やして,今回の結果を再現できるか どうかを確認する プログラム盗用(流用)が行われたソフトウェアを用いて 調査を行っていく(派生開発ソフトウェアなど) まとめです. こんかい,プログラム盗用の判断基準を明確にすることを目的としました. そのためにまず,プログラム盗用(流用)のないソフトウェアを用いてクローン長とクローン検出確率の関係を調査することで, その傾向を算出しました. 今後の課題としては 今回算出した近似式の検討を行うことや, ソフトウェア数を増やすことで,今回の結果を再現できるかどうかを確認したいと思います. また,実際にプログラム盗用の存在するソフトウェアを用いて調査を行っていきたいと考えています. コードクローンの長さに基づく プログラム盗用確率の実験的算出 2008年12月18日

コードクローンの長さに基づく プログラム盗用確率の実験的算出 2008年12月18日

コードクローンの長さに基づく プログラム盗用確率の実験的算出 実験結果と近似値 クローン長 ソフトウェア数46件の実験結果 ソフトウェア数46件の 近似値 30 0.44155 0.4441 40 0.18937 0.19183 50 0.09758 0.10003 61 0.05797 0.05599 69 0.04155 0.03908 79 0.02609 0.02633 90 0.01932 0.018 102 0.01643 0.01249 114 0.01159 0.00903 128 0.01063 0.00644 162 0.00193 0.00324 200 0.00097 0.00175 クローン長を代入して求めた近似値と実験結果を比較したものとなります. コードクローンの長さに基づく プログラム盗用確率の実験的算出 2008年12月18日

コードクローンの長さに基づく プログラム盗用確率の実験的算出 CCFinderXの設定 最小クローン長:30 最小TKS(トークンセットサイズ):1 シェイパレベル:ソフトシェイパ P-match利用あり コードクローンの長さに基づく プログラム盗用確率の実験的算出 2008年12月18日

コードクローンの長さに基づく プログラム盗用確率の実験的算出 関連研究 岡本 圭司, 玉田 春昭, 中村 匡秀, 門田 暁人, 松本 健一, ``API呼び出しを用いた動的バースマーク,'' 電子情報通信学会論文誌D, Vol.J89-D, No.8, pp.1751--1763, August 2006. L. Prechelt, G. Malpohl, and M. Philippsen, “Finding plagiarisms among a set of programs with JPlag”, resubmitted to Journal of Universal Computer Science, 2001. コードクローンの長さに基づく プログラム盗用確率の実験的算出 2008年12月18日

コードクローンの長さに基づく プログラム盗用確率の実験的算出 ソフトウェアの規模 最小 最大 平均 コードクローンの長さに基づく プログラム盗用確率の実験的算出 2008年12月18日