VOL. J107-D NO. 2
FEBRUARY 2024
本PDFの扱いは、電子情報通信学会著作権規定に従うこと。
なお、本PDFは研究教育目的（非営利）に限り、著者が第三者に直接配布することができる。著者以外からの配布は禁じられている。

論

文

SemanticCloneBench を用いた深層学習に基づく

コードクローン検出手法の評価
鶴

智秋† a)

松下

誠† b)

肥後

芳樹† c)An Evaluation of Deep-Learning-Based Code Clone Detection Methods
Using SemanticCloneBenchTomoaki TSURU† a) , Makoto MATSUSHITA† b) , and Yoshiki HIGO† c)

あらまし 構文上異なるにもかかわらず同様の振る舞いが記述されているソースコード片を意味的クローンと呼ぶ．近年では，意味的クローンの検出を目的として，深層学習を用いたクローン検出手法が多数提案されている．しかし，クローン検出の分野において有名かつ巨大なベンチマークである BigCloneBench には，意味的クロー
ン検出性能評価において多くの問題が存在する．本研究では，SemanticCloneBench と呼ばれる，意味的クローンの性能評価に特化したベンチマークを用いて，深層学習に基づくクローン検出手法である ASTNN，CodeBERT，
InferCode の 3 手法を対象とした検出性能の評価を行う．適用実験の結果より，ASTNN における F 値は 0.921 であり，評価対象となる検出手法の中で最も高い検出性能を示した．また，F 値が高くなるようなしきい値の範囲を調査した結果，CodeBERT と InferCode で高い F 値を示したしきい値の範囲は，ASTNN において F 値が高くなるようなしきい値の範囲よりも狭いと判明した．
キーワード

コードクローン，意味的コードクローン，深層学習，SemanticCloneBench

クローンに着目した古典的なクローン検出手法では，

1. ま え が き

意味的クローンの検出が非常に困難である，なぜならコードクローン（以後，クローン）とは，他と一致まば，意味的クローンは，振る舞いだけが一致している

たは類似する箇所があるソースコード片である．一般に過ぎず，トークン列や命令文などの構文的構造が異的に，クローンは，構文的な類似度に基づいて，構文なるため，その検出難度は構文的クローンの検出難度

的クローンと意味的クローンの 2 種類に分類される．

よりも非常に高くなるためである．したがって，意味構文的クローンは，トークン列や命令文など，ソース

的クローン検出のためには，構文的クローン検出とはコードの構造が類似するクローンを指す．一方，意味異なるアプローチが必須となる．

的クローンは，同じ振る舞いであるにもかかわらず，

近年では，意味的クローンを検出するために，深層構文的に異なるクローンを指す，意味的クローンの検

学習的なアプローチからクローンを検出する手法が提出は，ソースコードをクエリとしたソースコード検案され始めている [5]〜[8]．多数の深層学習を用いた

索 [1] や，API の使用例に基づく再利用のためのソークローン検出手法が提案され続ける一方で，それらのスコード推薦 [2] などへの応用が期待されている．

検出手法の評価に課題が発生する．多くの深層学習を

これまでに，構文的クローンに着目したクローン検用いたクローン検出手法では，意味的クローン検出性

出手法が多数提案されている [3], [4]．しかし，構文的能評価のために，BigCloneBench [9], [10] と呼ばれる，† 大阪大学，吹田市

Osaka University, Suita-shi, 565–0871 Japan

オープンソースソフトウェアに含まれるソースコードから構成された巨大なベンチマークが用いられる．

a) E-mail: t-tsuru@ist.osaka-u.ac.jp

BigCloneBench は，構文的クローンだけでなく，多くb) E-mail: matusita@ist.osaka-u.ac.jpの意味的クローンを正解クローンとして含むため，正c) E-mail: higo@ist.osaka-u.ac.jp
DOI:10.14923/transinfj.2023JDP7022

34

電子情報通信学会論文誌 D Vol. J107–D

解クローンを大量に学習した場合の意味的クローン
No. 2 pp. 34–42 © 一般社団法人電子情報通信学会 2024

論文／SemanticCloneBench を用いた深層学習に基づくコードクローン検出手法の評価

検出性能の評価が可能である．しかし，Krinke らの学習モデルを用いた手法で高い F 値を示したしきい値

報告によると，異なる振る舞いを行うソースコードのの範囲は，ASTNN において F 値が高くなるようなし

ペアが正解クローンとして定義されているなど，意味

きい値の範囲と比べて，しきい値の高い位置に分布し的クローンの検出性能評価において多くの問題が存ている．

在する [11]．BigCloneBench を意味的クローンの検出

本研究の貢献は，以下の 3 点である．

性能評価に用いる場合，誤った正解クローンの影響で•

SemanticCloneBench を用いた評価実験の実施妥当性が脅かされると考えられるため，意味的クロー•

教師あり学習を用いたクローン検出手法と教師ンの検出を目的とする，深層学習を用いたクローン検
出手法における評価に対して，結果の信頼性が低下す
る [11]．
本 研 究 で は ，深 層 学 習 を 用 い た ク ロ ー ン 検 出 手
法 に お け る 評 価 の 見 直 し を 目 的 と し て ，Semantic-

なし学習を用いたクローン検出手法とを初めて比較•

意味的クローン検出において F 値が高くなるよ

うなしきい値の範囲の観察

2. 準

備

CloneBench [12] を題材とした深層学習に基づくクロー

2. 1 コードクローン

ン検出手法における評価を実施する．比較対象の深層

コードクローン（クローン）とは，他と一致または学習を用いたクローン検出手法として，ASTNN [6]，類似する箇所があるソースコード片である．また，互CodeBERT [7]，InferCode [8] の 3 手法を採用する．

いにクローン関係にあるソースコード片のペアを，ク

SemanticCloneBench は，意味的クローンの検出性

ローンペアと呼ぶ．

能 評 価 に 特 化 し た ベ ン チ マ ー ク で あ る ．Semantic-

一般的に，クローンは，構文的な類似度の違いにCloneBench では，プログラミング言語における質基づき，Type-1 から Type-4 までの 4 種類に分類され問回答 Web サイトである Stack Overflow の同一質問

る [13]．

に含まれる回答ソースコードを，意味的クローンとして定義する．SemanticCloneBench では，正解クローンの定義が明確である，かつ，全てのソースコードペアに対する手動検証により，類似度の低いコードのペア
が SemanticCloneBench 中に混入される可能性が低くなるため，SemanticCloneBench を用いた意味的クロー
ン検出性能の評価における結果は，BigCloneBench を用いた意味的クローン検出性能の評価における結果よりも信頼できると考えられる．
適用実験では，意味的クローン検出において，クロー•

Type-1: 空白や改行，及びコメントの差異を除いて完全一致するクローン．

•

Type-2: 変数名や関数名などの識別子名の差異を除いて一致するクローン．

•

Type-3: 命令文単位での挿入や削除，変更が行

われたクローン．

•

Type-4: 同じ振る舞いであるにもかかわらず，

構文的に異なるクローン．
上記クローンのうち，Type-1 から Type-3 までを構
文的クローン，Type-4 を意味的クローンと呼ぶ．

ン検出手法ごとに F 値が高くなるようなしきい値を明

これまでに，多数のクローン検出手法が提案されてらかにするために，SemanticCloneBench に対してしきいる [3], [4]．クローンの検出により，利用 API の推い値を変化させた場合の F 値曲線の観察を実施する．

薦 [14] や，冗長な記述に対するリファクタリングの推F 値が高くなるようなしきい値の範囲が広いクローン薦 [15]，同一変更を要する箇所に対する変更推薦 [16]，検出手法は，最適なしきい値を事前に選択できない場

ライセンス違反の検出 [17] といった様々な応用が可能

合でも高い性能をもたらしうると考えられる．したとなる．また Type-4 クローンの検出により，ソース

がって，しきい値を変化させた場合の F 値曲線の観察

コードをクエリとしたソースコード検索 [1] や，APIにより，最適なしきい値を事前に選択できない場合での使用例に基づく再利用のためのソースコード推薦 [2]も高い性能をもたらしうる手法を特定できる．適用実などの応用が期待される．

験の結果より，SemanticCloneBench に対して，RNN

2. 2 BigCloneBenchを用いた手法である ASTNN において F 値が高くなる

BigCloneBench [9], [10] は，クローン検出性能評価

ようなしきい値の範囲は，CodeBERT や InferCode とで 用 い ら れ る 大 規 模 な ベ ン チ マ ー ク で あ る ．Big-

いった事前学習モデルを用いた手法で高い F 値を示し

CloneBench には，プロジェクト間リポジトリの大規

たしきい値の範囲よりも広いと判明した．また，事前
35

電子情報通信学会論文誌 2024/2 Vol. J107–D No. 2

模データである IJaDataset 2.0（注 1）からマイニングされ，著者らが知る限り，教師あり学習を用いた手法と教手動または自動で振り分けられた，特定の機能ごとに師なし学習を用いた手法を直接比較した研究は存在しおけるクローン情報等のラベルが含まれる．Type-3 及ない．教師あり学習を用いた手法と教師なし学習を用

び Type-4 の境界が曖昧であるため，BigCloneBench でいた手法との未比較により，深層学習を用いたクロー

は，命令文単位での構文的類似度に基づいて，[0.0, 1.0)

ン検出手法の文脈において，教師あり学習と教師なしの範囲で Type-3/Type-4 クローンを定義している．

学習との検出性能の違いが不明瞭となる．したがって，•

Strongly Type-3: [0.7, 1.0)

本研究では，教師あり学習を用いた手法と教師なし学•

Moderately Type-3: [0.5, 0.7)

習を用いた手法との比較を実施する．具体的には，適•Weakly Type-3/Type-4: [0.0, 0.5)

合率 (Precision)，再現率 (Recall)，F 値 (F1-Score) の 3

BigCloneBench は，多くの古典的なクローン検出

種類を用いて，教師あり学習を用いた手法と教師なし

手法において，クローン検出性能評価のベンチマー

学習を用いた手法との検出性能の違いを明瞭にする．

クとして幅広く使用されている [18], [19]．また，Big-

3. 2 Type-4 クローン検出の評価ベンチマーク

CloneBench に含まれる正解クローンペアの大多数がType-4 クローン検出手法の評価に用いられるベンチ

Weakly Type-3/Type-4 であるため，深層学習を用いたマークとして，BigCloneBench [9], [10] のほかに，OJ-

手法における性能評価ベンチマークとしても使用されClone [20]，Google Code Jam [5]，SemanticCloneBenchている [6]．

[12] が提案されている．

しかし，Krinke らの調査により，BigCloneBench に

OJClone [20] や Google Code Jam [5] は，オンライは，異なる振る舞いを行うソースコードのペアが正解

ンプログラミングコンテスト上に提出されたソース

クローンとして定義されている，複数機能を有する

コードから Type-4 クローンを収集したベンチマークでソースコードの存在を考慮していないなど，Type-4 ク

ある．オンラインプログラミングコンテスト上に提出

ローンの検出性能評価において多くの問題が報告されされたソースコードの数は膨大であり，かつ，同一問ている [11]．

題に対する解答ソースコードの集合をクローンとして

BigCloneBench を Type-4 クローンの検出性能評価

定義できるため，OJClone や Google Code Jam をベンに用いる場合，上記の問題により，誤った正解クロー

チマークとして使用可能である．しかし，オンラインンの影響で妥当性が脅かされるため，Type-4 クローン

プログラミングコンテスト上に提出されたソースコーの検出を目標とする，深層学習を用いたクローン検出

ドには，実際のプロジェクトには見られないプログラ手法の評価結果に対する信頼性が低下する．

ミングコンテスト特有のテクニックが存在する [21]．

3. 関 連 研 究
3. 1 深層学習を用いたクローン検出手法

一方，SemanticCloneBench [12] は，プログラミング
言語における質問回答 Web サイトである Stack Over-flow から Type-4 クローンを収集したベンチマークで深層学習を用いたクローン検出では，教師あり学ある．Stack Overflow に含まれる回答ソースコードは，

習を用いた手法が多数提案されている [5]〜[7]．一方，実際のプロジェクトに含まれていない可能性が考えら

教師なし学習を用いた手法も数件提案されている [8]．

れる．しかし，SemanticCloneBench に含まれるクロー

教師あり学習を用いた手法では，学習のために検出対ンは，実際の開発者による Stack Overflow に投稿され象データセットに対して正解クローンが必須である．

た質問に対する解決例の集合であるため，実際のプロ

したがって，あらかじめ検出対象データセット内部にジェクト開発で発生した問題に対する解決ソースコー

含まれるソースコードのペアに対して，人力で正解ク

ドが Stack Overflow に存在する可能性は，オンライン

ローンをアノテーションする必要があり，正解クロー

プログラミングコンテスト上におけるソースコード

ン集合に依存してクローンの検出能力が制限される．

の集合に存在する可能性よりも高いと考えられる．ま教師あり学習を用いたクローン検出手法における正解

た，Al-Omari らは，SemanticCloneBench を構成するクローンの必要性を軽減するために，教師なし学習をにあたり，Java 言語で記述された全 1,000 個のコード用いた手法が提案され始めている [8]．

ペアに対する正解クローンの手動検証を実施するために，2 名の審査員を雇った．2 名の審査員によって実（注 1）：https://github.com/clonebench/BigCloneBench36

施される全てのコードペアを対象とした正解クロー論文／SemanticCloneBench を用いた深層学習に基づくコードクローン検出手法の評価

ンの手動検証により，類似度の低いコードのペアが(F1-Score) といった 3 種類の評価指標を用いて，各手

SemanticCloneBench 中に混入される可能性が低くな法における Type-4 クローンの検出性能を評価する．

る．したがって，本研究では，深層学習を用いたクロー

4. 1 比 較 対 象

ン検出手法を応用する場合を考慮して，信頼性の高い，

本研究では，教師あり学習を用いたクローン検出手法

かつ実際のプロジェクトで用いられるソースコードにとして ASTNN [6]，CodeBERT w/ fine-tuning [7]，教師

近い評価用ベンチマークとして SemanticCloneBench

なし学習を用いたクローン検出手法として CodeBERTを採用する．

4. 実

w/o fine-tuning，InferCode [8] を比較対象として適用

験

実験を実施する．

4. 1. 1 ASTNN

図 1 は，本研究における適用実験の手順である．まASTNN は，抽象構文木ベースのニューラルネット

ず，SemanticCloneBench に含まれるソースコードを，ワークモデルである [6]．抽象構文木と回帰型ニュー実験対象のクローン検出器で使われる深層学習モデル

ラルネットワーク (RNN) との併用により，字句情報に入力できるように，トークン列や抽象構文木 (AST)や命令文単位での構文情報を学習できる．クローン検等のコード表現に変換する．次に，10 × 10 重交差検証

出では，ソースコードのペア同士における類似度としに基づいて訓練用データと評価用データに分割されたて，L1 ノルムを使用する．

SemanticCloneBench を用いて，SemanticCloneBench に

ASTNN を提案した Zhang らは，しきい値を 0.5 に設含まれるソースコードペアごとの類似度を出力する．

定し，BigCloneBench [9] と OJClone [20] を題材としなお，深層学習モデル内部のハイパーパラメータとした適用実験を実施した．彼らは，OJClone では，適合率て，比較対象となる各クローン検出手法の論文で示さが 98.9%，再現率が 92.7%，F 値が 0.955 であったと報れている値を用いる [6], [8], [22]．最後に，クローン検告している．また，BigCloneBench に対しては，クロー

出器のしきい値を変化させて，しきい値ごとに計測しン分類ごとに検出性能を評価し，Weakly Type-3/Type-4

た検出性能を示す評価尺度の表を作成する．ここで，では，適合率が 99.8%，再現率が 88.3%，F 値が 0.938

しきい値の変化範囲は [0.0, 1.0] である．また，しきいであったと報告している．

値の変化間隔を 0.001 に設定する．本研究では，上記手適用実験では，GitHub で公開されている ASTNN

順によって作成される，しきい値ごとの検出性能を示

リポジトリ（注 2）を利用する．クローン検出のために，す評価尺度が記録された表を用いて，各クローン検出

Skip-gram アルゴリズムを利用した Word2vec [23] の器の性能を評価する．適用実験は，10 コアの 2.2 GHz

エンべディングシンボルを訓練する．エンべディング

Intel Xeon E5-2630 v4 CPU と，5.5 TB HDD，256 GB

シンボルのサイズを 128 に，隠れ層のサイズを 100 に

メインメモリ，NVIDIA Tesla V100S GPU 上で実施さ設定する．また，バッチサイズを 32 に，訓練時のエれる．また，適合率 (Precision)，再現率 (Recall)，F 値

ポック数を 5 に設定する．最後に，訓練時のオプティ
マイザ AdaMax における学習率を 0.002 に設定する．

4. 1. 2 CodeBERT
CodeBERT は，トークンベースの事前学習モデルである [7]．ソースコードのトークンと自然言語のテキ
スト，及び BERT [24] の併用により，プログラミン
グ言語及び自然言語のマルチモーダルな情報を学習できる．CodeBERT では，ソースコードのトークンと自然言語のテキストとを事前学習したのち，ソースコー
ドドキュメント生成などのタスクのためにファイン
チューニングする．

CodeBERT を提案した Feng らは，CodeBERT を用いたクローン検出に対して評価を実施していない．代
図 1 適用実験の概要（注 2）：https://github.com/zhangj111/astnn

37

電子情報通信学会論文誌 2024/2 Vol. J107–D No. 2

わりに，Guo らが，BigCloneBench に対して適用実験におけるバッチサイズを 5 に設定する．

を実施した [22]．彼らは，適合率が 94.7%，再現率が4. 2 SemanticCloneBench

93.4%，F 値が 0.941 であったと報告している．

適用実験では，Type-4 クローン検出の性能評価に用本研究では，クローン検出をタスクとしてファイン

いるベンチマークとして，SemanticCloneBench [12] をチューニングし，CodeBERT におけるクローン検出性用いる．SemanticCloneBench は，Type-4 クローンの能の評価を実施する．また，事前学習のみにおけるク

検出性能評価に特化したベンチマークである．Seman-

ローン検出の性能評価を行うために，ファインチュー

ticCloneBench に含まれるクローンは，プログラミング

ニングあり CodeBERT (CodeBERT w/ fine-tuning) と言語における質問回答 Web サイトである Stack Over-

ファインチューニングなし CodeBERT (CodeBERT w/oflow（注 7）から抽出されている．SemanticCloneBench で

fine-tuning) の 2 種類を比較対象とする．

は，同一質問に含まれる回答ソースコードを，Type-4

適用実験では，Hugging Face にて公開されている（注 3）,（注 4）

CodeBERT のモデル

クローンとして定義している．SemanticCloneBench でを利用する．また，ソーは，C，C#，Java，Python で記述されたソースコード

スコードのペア同士における類似度として，コサインが収集されており，言語ごとにそれぞれ 1,000 個の類似度を使用する．事前学習モデルにおける入力ソー

Type-4 クローンのペアが含まれている．

スコードトークンの長さを 256 に，バッチサイズを 16適用実験では，SemanticCloneBench に含まれる Javaに設定する．また，ファインチューニング時における言語で記述された 1,000 個のクローンのうち，Python

学習率を 0.00002，エポック数を 1 に設定する．最後の javalang（注 8）パッケージで構文解析可能な 997 個のに，ファインチューニング時のオプティマイザとしてクローンを対象とする．また，正解クローンと非正解

Adam を利用する．

クローンの比が 1 : 1 となるように，非正解クローンを4. 1. 3 InferCode

作成する．具体的には，SemanticCloneBench に含まれInferCode は，抽象構文木ベースの事前学習モデル

るメソッドをランダムに 2 個抽出し，抽出したメソッである [8]．抽象構文木と，木構造に基づいた畳み込み

ドのペアが SemanticCloneBench でクローンとして定ニューラルネットワーク (TBCNN) [20] との併用によ義されていないならば，このメソッドのペアを非正解

り，事前学習モデルとして，ソースコードクラスタリ

クローンとして定義する．更に，上記の作業により作ングなどの教師なし学習タスクや，ソースコード分類

成された非正解クローンを含めた SemanticCloneBenchなどの教師あり学習タスクに応用できる．Bui らは，を 10 × 10 重交差検証に基づいて学習及び評価を実施

InferCode をクローン検出を教師なし学習タスクとしする．10 × 10 重交差検証は，10 重交差検証を 10 回実て実装している．本研究でも，InferCode は教師なし

行する評価手法であり，10 × 10 重交差検証によって学習を用いたクローン検出手法として，適用実験の比得られる結果の平均値を計算し，クローン検出器の検較対象とする．クローン検出では，ソースコードのペ出性能を計測する．

ア同士における類似度として，コサイン類似度を使用する．

InferCode を提案した Bui らは，しきい値を 0.8 に設定し，BigCloneBench [9] と OJClone [20] を題材とした適用実験を実施した．彼らは，BigCloneBench では，適合率が 90%，再現率が 56%，F 値が 0.75，OJClone

4. 3 Research Questions
本研究では，以下に示す 2 個の Research Question（RQ）を立てる．

•

RQ1: しきい値に基づく評価指標より，どのク

ローン検出器の検出性能が高いか．

•

RQ2: Type-4 クローン検出では，各クローン検では，適合率が 61%，再現率が 70%，F 値が 0.64 で出器において F 値が高くなるようなしきい値の範囲があったと報告している．

どのように分布するのか．

適用実験では，PyPI にて公開されている InferCode

RQ1 の調査により，SemanticCloneBench を対象とのモデル（注 5）,（注 6）を利用する．また，クローン検出時した Type-4 クローン検出において，F 値が一番高いときのしきい値を基に，検出性能が一番高いクローン検（注 3）：https://github.com/microsoft/CodeBERT（注 4）：https://huggingface.co/microsoft/codebert-base（注 5）：https://github.com/bdqnghi/infercode（注 6）：https://pypi.org/project/infercode38（注 7）：https://stackoverflow.com/（注 8）：https://github.com/c2nes/javalang

論文／SemanticCloneBench を用いた深層学習に基づくコードクローン検出手法の評価

出器を明示する．そして，各検出器において検出性能

きに F 値が最大（0.879）となり，適合率と再現率はの違いが生じた理由を考察する．

それぞれ 90.5%，85.4% を得る．他のクローン検出器

RQ2 の調査により，Type-4 クローン検出において，と比べると，適合率の値が約 3 ポイント–約 21 ポイン

クローン検出手法ごとに F 値が高くなるようなしき

ト高く，CodeBERT w/ fine-tuning は，本実験においてい値の範囲を明らかにし，最適なしきい値を事前に選最も誤検出を起こしにくいクローン検出器であると言択できない場合でも高い性能をもたらしうるクローン

える．CodeBERT w/ fine-tuning では，正解クローンの検出手法を特定する．なお，SemanticCloneBench 以外

ファインチューニングにより，事前学習で得たコードのデータセットにおいて F 値が高くなるようなしき表現だけでなく，意味的クローンの分類能力が強化さ

い値の範囲は不明であるため，本研究では，Semantic-

れる．これにより，CodeBERT w/ fine-tuning の適合率

CloneBench に対して F 値が最大となるしきい値付近

が他のクローン検出手法よりも高くなると考えられる．

を，F 値が高くなるようなしきい値の範囲と定義する．

教師なし学習を用いたクローン検出器である Code-

ここで，F 値が最大となるしきい値付近とは，F 値が

BERT w/o fine-tuning は，しきい値が 0.985 のときに F[(F 値の最大値の 0.95 倍), (F 値の最大値)] となるとき値が最大（0.791）となり，適合率と再現率はそれぞれのしきい値とする．

74.9%，83.7% を得る．また，InferCode は，しきい値

F 値が高くなるようなしきい値の範囲が広いクローが 0.884 のときに F 値が最大（0.759）となり，適合率

ン検出手法は，最適なしきい値を事前に選択できないと再現率はそれぞれ 69.4%，83.7% を得る．教師あり

場合でも高い性能をもたらしうると考えられる．一学習を用いた検出器と比べると，両検出器の適合率は方で，F 値が高くなるようなしきい値の範囲が狭いク

約 13 ポイント–21 ポイント，また F 値は 0.088–0.162

ローン検出手法は，最適なしきい値を事前に選択でき低い．Type-4 クローンにおける検出難度の高さ，及ない場合において，その手法が有するはずの検出性能

びコード表現のみの事前学習を用いたクローン検出にが発揮できないと予想される．

より，教師なし学習を用いたクローン検出器における適合率及び F 値は，教師あり学習を用いた検出器と5. 実 験 結 果比べて低い値になると考えられる．一方，CodeBERT

5. 1 RQ1: しきい値に基づく検出性能の評価

w/o fine-tuning と InferCode における再現率はどちら

表 1 は，SemanticCloneBench 上で，各クローン検出

も 83.7% であり，古典的手法の一つである NiCad [25]

器の F 値が最大となるしきい値における，適合率，再の再現率（4.0%）[12] よりも非常に高い．また，教師現率，F 値である．

あり学習を用いた手法と比べて，再現率の減少が高々ASTNN は，しきい値が 0.393 のときに F 値が最大

約 14 ポイントに抑えられている．

（0.921）となり，適合率と再現率はそれぞれ 87.5%，

表 2 は，BigCloneBench を用いたときの実験結果

97.3% を得る．他のクローン検出器と比べると，再と，SemanticCloneBench を用いたときの実験結果を示

現率の値が約 12 ポイント–14 ポイント，また F 値がした表である．SemanticCloneBench に対する ASTNN

0.042–0.162 高く，本実験において最も高い検出性能を用いたクローン検出では，BigCloneBench と比べてを示す．ASTNN では，検出対象データセットごとに，適合率が約 12 ポイント減少した一方で，再現率は約 9

そのデータセットに含まれるトークンや抽象構文木のポイント増加した．その結果，SemanticCloneBench にノードに対するエンべディングを構成するため，再現おける ASTNN の F 値は，BigCloneBench と比較して率及び F 値の値が高いと考えられる．

CodeBERT w/ fine-tuning は，しきい値が 0.918 のと0.017 減少した．一方，SemanticCloneBench に対する
CodeBERT w/ fine-tuning を用いたクローン検出では，
BigCloneBench と比べて適合率・再現率ともに減少し，

表 1 SemanticCloneBench に対する各クローン検出器の適合率，再現率，F 値
ASTNN
CodeBERT w/ fine-tuning
CodeBERT w/o fine-tuning
InferCode

しきい値
0.393
0.918
0.985
0.884

適合率 再現率 F 値
87.5% 97.3% 0.921
90.5% 85.4% 0.879
74.9% 83.7% 0.791
69.4% 83.7% 0.759

それぞれ約 4 ポイント，約 8 ポイントであった．その結果，SemanticCloneBench における CodeBERT w/

fine-tuning の F 値は，BigCloneBench と比較して 0.062
減少した．SemanticCloneBench に対する InferCode を用いたクローン検出では，BigCloneBench と比べて適合率が約 20 ポイント減少した一方で，再現率は約 2839電子情報通信学会論文誌 2024/2 Vol. J107–D No. 2
表 2 BigCloneBench 及び SemanticCloneBench を対象としたクローン検出手法の実験結果

ASTNN
CodeBERT w/ fine-tuning
InferCode

BigCloneBench [6], [8], [22]適合率 再現率F値
99.8% 88.4%
0.938
94.7% 93.4%
0.941
90%
56%
0.75

SemanticCloneBench
適合率 再現率 F 値
87.5% 97.3% 0.921
90.5% 85.4% 0.879
69.4% 83.7% 0.759ている．
事前学習モデルを用いたクローン検出手法では，ク
ローン検出の前にコード表現を事前学習するため，

RNN などの正解クローンを直接学習する手法よりも，類似度の値が高く出力される．したがって，事前学習
モデルに基づくクローン検出手法を Type-4 クローン検出に用いる場合，SemanticCloneBench に対するク
ローン検出のときと同様に，しきい値を高めに設定する必要があると考えられる．

CodeBERT を含む事前学習モデルに基づくクローン
検出手法は，F 値が高くなるようなしきい値の範囲が狭い．したがって，事前学習モデルを用いたクローン
図 2 SemanticCloneBench に対してしきい値を変化させた
場合の F 値曲線

検出器において，しきい値を適切に設定できない場合の F 値は，最大値と比べて非常に小さくなるため，事

表 3 SemanticCloneBench に対する各クローン検出器において F 値が高くなるようなしきい値の範囲
ASTNN
CodeBERT w/ fine-tuning
CodeBERT w/o fine-tuning
InferCodeF 値の範囲[0.875, 0.921][0.835, 0.879][0.751, 0.791][0.721, 0.759]

しきい値の範囲[0.175, 0.617][0.876, 0.935][0.980, 0.989][0.803, 0.921]

前学習モデルを用いたクローン検出器が有するはずの高い検出性能を発揮できないと予想される．
一方，ASTNN では，F 値が高くなるようなしきい値の範囲が広い．したがって，ASTNN において，仮に F 値が最大となるようなしきい値を設定できなかったとしても，ASTNN の F 値が最大となるような状態に近い検出性能を発揮できる可能性が高い．

ポイント増加した．結果として，SemanticCloneBenchにおける InferCode の F 値は，BigCloneBench における F 値とほぼ同じ値の 0.79 であった．

5. 2 RQ2: Type-4 クローン検出において F 値が高くなるようなしきい値の範囲

6. 妥当性への脅威
適用実験で使用した SemanticCloneBench に含まれる正解クローンペア数は 997 個であり，BigCloneBenchに含まれる Weakly Type-3/Type-4 の正解クローンペア

図 2 は，SemanticCloneBench に対してしきい値を変数（約 8,400,000 個）と比べて遥かに小さい．そのた化させた場合の F 値曲線である．また，表 3 は，適用

め，RQ1，RQ2 の結果に影響を及ぼすと考えられる．

実験の比較対象である各クローン検出手法において F

今後，実際のプロジェクトで頻繁に出現すると期待さ値が高くなるようなしきい値の範囲の一覧である．

れる意味的クローンを抽出して，巨大な，かつ，多く

本実験より，SemanticCloneBench に対する，Code-の研究者によって審議された意味的クローンの検出性

BERT や InferCode などの事前学習モデルを用いた手能を評価できるベンチマークの作成が必要である．

法で高い F 値を示したしきい値の範囲は，RNN を用

また，本研究では，SemanticCloneBench に限定して，いた手法である ASTNN において F 値が高くなるようType-4 クローン検出において F 値が高くなるようななしきい値の範囲よりも狭いと判明した．また，事前しきい値を予測しており，これは，RQ2 に対する妥当学習モデルを用いた手法で高い F 値を示したしきい値

性への脅威である．今後，SemanticCloneBench 以外のの範囲は，ASTNN において F 値が高くなるようなし

Type-4 クローン検出評価ベンチマークに対する評価もきい値の範囲と比べて，しきい値の高い位置に分布し実施し，一般的な Type-4 クローンにおいても F 値が40

論文／SemanticCloneBench を用いた深層学習に基づくコードクローン検出手法の評価高くなるしきい値の有効性を検証したい．

similarity,” Proc. Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software

更に，適用実験では，各クローン検出手法において，比較対象クローン検出手法の論文で示されているハイ
パーパラメータの値を使用している．比較対象クロー

Engineering, pp.141–151, 2018.
[6]novel neural source code representation based on abstract syntax

ン検出手法では，ハイパーパラメータの具体的な調節プロセスが明記されていないため，これは RQ1 やtree,” Proc. Int. Conf. Software Engineering, pp.783–794, 2019.
[7]

Z. Feng, D. Guo, D. Tang, N. Duan, X. Feng, M. Gong, L. Shou,
B. Qin, T. Liu, D. Jiang, and M. Zhou, “CodeBERT: A pre-trained

RQ2 に対する妥当性への脅威である．今後，各クロー

model for programming and natural languages,” Proc. Conf. Em-

ン検出手法のハイパーパラメータが，本研究の実験結

pirical Methods in Natural Language Processing, pp.1536–1547,

果に対してどのように影響を及ぼすかの検証が必須で

2020.
[8]

ある．

J. Zhang, X. Wang, H. Zhang, H. Sun, K. Wang, and X. Liu, “A

N.D.Q. Bui, Y. Yu, and L. Jiang, “InferCode: Self-supervised
learning of code representations by predicting subtrees,” Proc. Int.

7. む す びConf. Software Engineering, pp.1186–1197, 2021.
[9]

J. Svajlenko, J.F. Islam, I. Keivanloo, C.K. Roy, and M.M. Mia,

本研究では，教師あり学習を用いたクローン検出手“Towards a big data curated benchmark of inter-project code法である ASTNN と CodeBERT w/ fine-tuning，教師clones,” Proc. Int. Conf. Software Maintenance and Evolution,

なし学習を用いたクローン検出手法である CodeBERT

pp.476–480, 2014.
[10]

w/o fine-tuning と InferCode に対して，クローン検出
性能の評価を実施した．SemanticCloneBench を題材

sis: Research, Tools, and Practices, pp.93–105, Springer, 2021.
[11]

J. Krinke and C. Ragkhitwetsagul, “BigCloneBench consideredharmful for machine learning,” Proc. International Workshop onとした適用実験により，教師あり学習を用いた手法と教師なし学習を用いた手法の両手法において，Type-4

J. Svajlenko and C.K. Roy, “BigCloneBench,” Code Clone Analy-

Software Clones, pp.1–7, 2022.
[12]

F. Al-Omari, C.K. Roy, and T. Chen, “SemanticCloneBench:

クローンを検出できた．教師あり学習を用いた手法とA semantic code clone benchmark using crowd-source knowl-

教師なし学習を用いた手法の F 値は，それぞれ 0.85，

edge,” Proc. International Workshop on Software Clones, pp.57–

0.75 を超えた．また，F 値が高くなるようなしきい値

63, 2020.
[13]の範囲を調査した結果，CodeBERT と InferCode で高い F 値を示したしきい値の範囲は，ASTNN において

F 値が高くなるようなしきい値の範囲よりも狭いと判明した．

ysis: Research, Tools, and Practices, pp.3–27, Springer, 2021.
[14]

ternational Workshop on Refactoring, pp.67–70, 2019.
[16]

Int. Conf. Computer Science and Software Engineering, pp.85–95,

本研究の一部は，JSPS 科研費（18H04094，

JP20H04166，JP21K18302，JP21K11820，P21H04877，

2016.
[17]

献

violations,” IEEE Software, vol.28, no.2, pp.42–47, 2010.
[18]

Y. Fujiwara, N. Yoshida, E. Choi, and K. Inoue, “Code-to-code

approach,” IEEE Access, vol.8, pp.27986–27997, 2020.
[19]

[4]

tection of large-variance clones,” Proc. Joint Meeting on European

usage-based code-example recommender for opportunistic reuse,”

Software Engineering Conference and Symposium on the Foun-

A. Sheneamer and J. Kalita, “A survey of software clone detec-

dations of Software Engineering, pp.830–841, 2021.
[20]

L. Mou, G. Li, L. Zhang, T. Wang, and Z. Jin, “Convolutionaltion techniques,” International Journal of Computer Applications,neural networks over tree structures for programming language

vol.137, no.10, pp.1–21, Oct. 2016.

processing,” Proc. AAAI Conf. Artificial Intelligence, pp.1287–

H. Min and Z. Li Ping, “Survey on software clone detection research,” Proc. Int. Conf. Management Engineering, Software En-[5]

T. Nakagawa, Y. Higo, and S. Kusumoto, “NIL: Large-scale de-

S. Abid, S. Shamail, H.A. Basit, and S. Nadi, “FACER: An API
Empirical Software Engineering, vol.26, no.6, pp.1–58, June 2021.

[3]

M. Wu, P. Wang, K. Yin, H. Cheng, Y. Xu, and C.K. Roy, “LVMapper: A large-variance clone detector using sequencing alignment

search based on deep neural network and code mutation,” Proc.
International Workshop on Software Clones, pp.1–7, 2019.

A. Monden, S. Okahara, Y. Manabe, and K. Matsumoto, “Guilty or
not guilty: Using clone metrics to determine open source licensing

JP22H03567，JP22K11985）を得て行われた．
文

M. Mondal, C.K. Roy, and K.A. Schneider, “An exploratory study
on change suggestions for methods using clone detection,” Proc.

性能評価ベンチマークの作成が挙げられる．

[2]

N. Yoshida, S. Numata, E. Choi, and K. Inoue, “Proactive clone
recommendation system for extract method refactoring,” Proc. In-

ローンで構成された，巨大な Type-4 クローンの検出[1]

I. Keivanloo, J. Rilling, and Y. Zou, “Spotting working code examples,” Proc. Int. Conf. Software Engineering, pp.664–675, 2014.

[15]

今後の課題として，実際の開発において発生するク

謝辞

K. Inoue, “Introduction to code clone analysis,” Code Clone Anal-

1293, 2016.
[21]

A. Laaksonen, Guide to competitive programming: Learning andgineering and Service Sciences, pp.9–16, 2019.

improving algorithms through contests, second edition, Springer,

G. Zhao and J. Huang, “DeepSim: Deep learning code functional

2020.

41

電子情報通信学会論文誌 2024/2 Vol. J107–D No. 2[22]

D. Guo, S. Ren, S. Lu, Z. Feng, D. Tang, S. Liu, L. Zhou, N. Duan,
A. Svyatkovskiy, S. Fu, M. Tufano, S.K. Deng, C. Clement, D.
Drain, N. Sundaresan, J. Yin, D. Jiang, and M. Zhou, “GraphCodeBERT: Pre-training code representations with data flow,”
https://arxiv.org/abs/2009.08366, 2020.

[23]

T. Mikolov, I. Sutskever, K. Chen, G.S. Corrado, and J. Dean, “Distributed representations of words and phrases and their compositionality,” Proc. Int. Conf. Neural Information Processing Systems,
pp.3111–3119, 2013.

[24]

J. Devlin, M.-W. Chang, K. Lee, and K. Toutanova, “BERT: Pretraining of deep bidirectional transformers for language understanding,” https://arxiv.org/abs/1810.04805, 2018.

[25]

C.K. Roy and J.R. Cordy, “NICAD: Accurate detection of nearmiss intentional clones using flexible pretty-printing and code normalization,” Proc. Int. Conf. Program Comprehension, pp.172–
181, 2008.

（2023 年 3 月 31 日受付，8 月 6 日再受付，
10 月 18 日早期公開）

鶴智秋

2021 大阪大学基礎工学部情報科学科卒．
2023 同大学大学院情報科学研究科コンピュータサイエンス専攻博士前期課程了．在学中，コードクローン分析に関する研究に
従事．

松下

誠

1993 大阪大学基礎工学部情報工学科卒．
1998 同大学大学院基礎工学研究科博士後期課程了．同年同大学基礎工学部情報工学科
助手．2002 同大学大学院情報科学研究科コンピュータサイエンス専攻助手．2005 同助教授．2007 同准教授．博士（工学）．リポ
ジトリマイニング，プログラム解析の研究に従事．情報処理学会，日本ソフトウェア科学会，ACM 各会員．

肥後 芳樹

（正員）

2002 大阪大学基礎工学部情報科学科中退．
2006 同大学大学院博士後期課程了．2007 同大学大学院情報科学研究科コンピュータサ
イエンス専攻助教．2015 同准教授．2022
同教授．博士（情報科学）．ソースコード
分析，特にコードクローン分析，リファクタリング支援，ソフトウェアリポジトリマイニング及び自動プ
ログラム修正に関する研究に従事．情報処理学会，日本ソフト
ウェア科学会，IEEE 各会員．

42