社団法人 電子情報通信学会
THE INSTITUTE OF ELECTRONICS,
INFORMATION AND COMMUNICATION ENGINEERS

信学技報
TECHNICAL REPORT OF IEICE.

自動修正適合性を用いた修正しやすいプログラム構造の評価
前島

葵†

肥後

芳樹†

藤本 章良†

楠本真二†

安田 和矢††

柗本真佑†

E-mail: †{a-maejim,higo,a-fujimt,shinsuke,kusumoto}@ist.osaka-u.ac.jp, ††kazuya.yasuda.fd@hitachi.com
あらまし

効率的なデバッグ作業の実現を目的とした自動プログラム修正（APR）に関する研究が数多く行われている．しかしながら，現状の APR 技術で修正できるバグはあまり多くない．このような現状から，APR 技術がバグを修正しやすいプログラムを人間が書くようになれば，APR 技術により多くのバグを自動で修正できるようになるとの考えにより，自動修正適合性という指標が先行研究により提案された．自動修正適合性とは，対象のプログラムにおいて APR 技術がどの程度バグを修正できそうかを表すソフトウェア品質指標である．自動修正適合性の利用により，開発者はこの数値が高いソフトウェアを開発できるようになり，その結果として APR 技術が多くのバグを修正できるようになる．先行研究では，自動修正適合性のアイデアが提案される一方，その計測対象が小規模なプ
ログラムのみであり，APR 技術とプログラム構造の関係が十分に明らかになったとはいえなかった．そこで本研究では，大規模なプログラム群を対象にして自動修正適合性の計測実験を行う．また，プログラム構造を変化させるためのミューテーション演算子を先行研究よりも多く用いることで，より信頼性の高い数値を算出できるように実
験を行う．
キーワード

自動プログラム修正，ミューテーションテスト，ソフトウェア品質モデル

1. は じ め に
ソフトウェア開発において，デバッグは多大なコストを要かではない．また，リファクタリングだけでなくプログラムを構成する制御文など自動修正適合性に影響を与える要因は他にも存在すると著者らは考えた．

する作業である．ソフトウェア開発コストの過半数をデバッ

本研究では，先行研究で提案された自動修正適合性の計測

グ作業が占めるという報告もある [1]．そのため，デバッグ支

実験を大規模に行うことにより，より信頼性の高い数値を計

援に関する研究が盛んに行われており，自動プログラム修正

測することを目指す．具体的には，より多くのプログラムに(Automated Program Repair: APR) と呼ばれる技術が注目を集

対してより多くのミューテーション演算子を利用して変異プめている．APR とは，バグを含むプログラムから自動的にバ

ログラムを生成する．これにより，先行研究に比べて遙かにグを取り除く技術である．

多い数の変異プログラムから自動修正適合性の数値が計測でこれまでに多くの APR 手法が提案されており [2]，多くのバ
グに APR 技術が適用されてきたが，現在のところ修正の成功

きるため，どのようなプログラム構造が APR と親和性が高いのかを明らかにできる．

率は高くない [3]．このような現状から，APR の研究開発に加2. 自動修正適合性

えて，APR の対象であるプログラムの面からも自動修正を支援すべきだと先行研究 [4] で提案された．先行研究によって，本章では先行研究で提案された自動修正適合性について述

自動修正適合性というソフトウェア品質指標が提案された．自べる．自動修正適合性とは，対象のプログラムでバグが発生

動修正適合性とは APR が対象のプログラムに対してどの程度した場合に APR がどの程度そのバグを修正するのに寄与しそ

効果的に作用するかを表す指標である．自動修正適合性を利うかを表す指標である．自動修正適合性が高いプログラムで用し対象プログラムを APR が作用しやすいように変更できるは，そのプログラムおいて発生したバグが APR によって修正ようになれば，自動で多くのバグを除去できるようになる．

できる可能性が高くなる．先行研究により以下 4 点に示す自性の違いを分析が行われた．その結果，同じ機能を持つプロ

動修正適合性の利用が提案された．
•
ソフトウェア開発に APR を導入するのかの判断

グラムでも構造が違えば自動修正適合性に変化があると明ら•

APR による保守を前提としたソフトウェア開発かになった．しかし，実験の規模が小さく一部のリファクタ•

APR の効果を高めるためのリファクタリングの研究

リングの調査しか行われていない．そのため，リファクタリ•

APR が誤ったプログラムを生成する問題の原因究明

先行研究によって，リファクタリングによる自動修正適合

ングの違いが APR にどの程度影響を与えているか十分に明ら
—1—

⼊⼒
⼊⼒

出⼒
ミュータント⽣成器 M

APRツール A

if(x > 0)x + 1

if(x < 0)if(x > 0)

return x;

x + 1

x + 1

return x;

return x;

プログラム P

#修正できたミュータント
テストスイート T

ミュータント1

ミュータント1
if(x > 0)#⽣成されたミュータント

if(x > 0)

x - 1

x - 1

return x;

return x;

ミュータント2

ミュータント2

図1

2. 1

⾃動修正適合性

自動修正適合性の計測手法の概要

しやすいようにプログラムを変換することで，これまで修正

計測手法

図 1 に先行研究 [4] で提案された自動修正適合性の計測手法の概要を示す．計測手法の入力は，以下の 4 つの要素である．
• プログラム Pができなかったバグを修正できるようになる．
先行研究の調査により，プログラムの構造によって自動修
正適合性の変化が見られた．その中でも，一時変数のインラ•

テストスイート T

イン化のリファクタリングは調査が行われた 7 つの APR ツー•

ミュータント生成器 M

ルのうち 5 つのツールで自動修正適合性が向上した．

•

APR ツール A

2. 3

先行研究の計測方法

出力はプログラム P の自動修正適合性である．P の自動修正

本章では，先行研究で行われた計測方法について述べ，続適合性は T ，M ，A に依存する値である．ミュータント生成

く 3. では本研究の計測方法の変更点について述べる．また，器によってプログラムに適用されるミューテーション演算子

図 2 に先行研究と本研究の計測方法の比較を示す．

が異なるため，生成されるミュータントの数も種類も利用す

実験対象プログラム

るミュータント生成器によって異なる．同一のバグに対して先行研究では，自動修正適合性の調査のために作成された単同一の APR ツールを適用してもテストスイートの品質によっ

一のメソッドで構成される小規模なプログラムに対して実験て修正の可否が変化する可能性がある [5]．また，APR ツールが行われた．プログラムの構造の違いとしてリファクタリン

によって修正の戦略が異なるため修正できるバグも異なる [6]．

グが題材にされた．様々なリファクタリングがある中で，先提案手法は以下の 3 つのステップで構成される．

行研究では「メソッドの構成」と「条件記述の単純化」に分類

Step1. ミュータント生成されるリファクタリングに限定し，単一のメソッド内で完結

Step2. APR ツールの適用する 6 種のリファクタリングが対象とされた．全 6 種の各リ

Step3. 自動修正適合性の算出

ファクタリングの題材につき，リファクタリング適応前と適応

以降，各ステップについて説明する．

後のプログラムが作成された．作成されたプログラムの行数

Step1. ミュータント生成

は 9 行から 14 行であり，平均行数は 11 行と小規模であった．

ミュータント生成器 M を用いてプログラム P からミュータントを複数生成する．各ミュータ

ミュータント生成器

ントは異なるミューテーション演算子の適用により生成され先行研究では，ミュータントを生成するために PIT [7] のるため，同じミュータントが複数生成されることは無い．

ミューテーション演算子を利用した（注 1）．先行研究では表 1 に

Step2. APR ツールの適用示すミューテーション演算子が利用された．

Step1. で生成された各ミュー

タントとテストスイート T を入力として APR ツール A を実行し，全てのテストケースが成功するプログラムを生成する．
ミュータントに対して T に含まれる全てのテストケースが成功する場合，そのミュータントは Step3. では用いない．
Step3. 自動修正適合性の算出

Step2. の実行結果より自動修

正適合性を算出する．自動修正適合性は，生成された全ミュー

3. 本研究における計測の変更点
3. 1

実験対象プログラム

本実験ではプログラムの構造の違いによる自動修正適合性の違いを計測するため，同じ機能を持つが構造の異なるプログラム群を対象とする．

タント (全てのテストケースが成功するミュータントを除く)

AtCoder は，AtCoder 社が運営しているプログラミングコンのうち A で修正済みプログラムを生成できたミュータントのテストサイトである．AtCoder では，定期的にいくつかのプ割合である．例えば， Step1. でミュータントが 10 個生成さログラミングコンテストが開催されている．AtCoder Beginner

れ，Step2. で 7 個のミュータントの修正に成功した場合， 自Contest(ABC) はプログラミング初心者向けのコンテストであ動修正適合性は 0.7（= 7/10）となる．

り，最も難易度の低い A 問題から最も難易度の高い D 問題の

2. 2

先行研究の調査結果

先行研究ではリファクタリングを題材に調査が行われた．自動修正適合性を向上させるリファクタリングが分かれば，APR（注 1）：先行研究で True Return および False Return とされていたミューテー
ションは本研究では Change Boolean Literal と統一した

—2—

先⾏研究

if(x > 0)if(x > 0)x + 1

if(y > 0)if(x > 0||y > 0)

本研究

if(x > 0)boolean b = x >0;if(b)if(x > 0)

while(x > 0)for(int x :list)

AtCoderswitch(x)x.stream(y -> )return x;

プログラム P

ミュータント⽣成器 M

リファクタリングの異なる数⾏のプログラム全6種

AtCoderから収集した構造の異なる解答プログラム群

if(x > 0)if(x <= 0)if(x > 0)if(x > 0)if(xif(x >> 0)0)

if(x <= 0)if(x > 0)if(y > 0)if(x > 0)

x + 1

x + 1

x - 1

x + 1

x + 1

x + 1

x - 1

x + 1

x + 1

y + 1

return x;

return x;

return x;

return 0;

return x;

return x;

return x;

return x;

return y;return x;

ミューテーション演算⼦10種

if(x > 0)

先⾏研究のミューテーション演算⼦10種+新たに追加した9種類

図 2 先行研究と本研究の計測方法の比較

4 つの問題で構成されている（注 2）．各問題は問題を説明する問

ミュータント生成

題文，入力の制約，入力・出力の形式およびテストケースに当

AtCoder の解答プログラムには，プログラムの実行時間の短たる入出力例から構成されている．プログラミングコンテス

縮のため自作の Scanner クラスや Math クラスが存在する場合

トの参加者は，与えられた問題をいかに素早く正確に解けるがある．そのため，本研究ではミュータント対象となるプロかを目指し，各々が考えた解答プログラムを提出する．本研

グラム部分を，main メソッドおよび solve メソッドのみとし究では，ABC から同じ問題を解くための様々な構造を持った

た．solve メソッドは ABC 参加者が解答プログラムの記述のプログラム群を収集した．

ため作成することの多いメソッドである．

3. 2

ミュータント生成器

APR ツール

本研究では，ミュータントを生成するために Simple Stupid

本実験では自動修正適合性の計測に以下の APR ツールを利Bugs(SStuBs) [8] から得られるバグパターンを用いた．SStuBs

用した．対象のツールは全て生成と検証に基づく手法の APR

は，オープンソース Java プロジェクトから抽出された単一ス

ツールである．

テートメントのバグ修正変更のデータセットである．SStuBs

jGenProg [9] 遺伝的プログラミングに基づいてプログラムをでは，頻出した単一ステートメントのバグ修正が 16 種類のバ

修正する．

グパターンに分類された．本研究では，著者が SStuBs のバグ

jMutRepair [10] 条件式および return 文のミューテーション

パターンを参考にしてソースコードを書き換えるツールを実によりプログラムを修正する．

装した．先行研究で調査されたミューテーション演算子に含Cardumen [11]修正対象のプログラムからマイニングしたテまれるバグパターンや，Java の例外処理に関するバグパター

ンプレートを用いて，式を置換することでプログラムを修正

ンを除いて表 2 に示す 9 種類のミューテーション演算子を実

する．

装した．

実験設定は 3 つの APR ツール全て共通し，世代数は 10 であり, 各世代の個体数は 10 である．

4. 実験の結果と考察
4. 1

4. 2

実験設定

本研究における計測の変更点の評価

本章では，本研究の提案手法である実験対象プログラムの実験対象プログラム

増加数と実験対象ミュータント演算子の増加数の評価を行う．

表 3 に示す ABC の 101 回，102 回の A, B 問題の合計 4 題を調査対象とした．表 3 に各問題の概要を示す．

実験対象プログラムの増加数
表 4 に ABC の各問題の生成されたミュータント数と修正できたミュータント数を示す．280 個から 300 個の解答プログ（注 2）：2019 年 4 月 27 日開催の ABC125 以前は 4 題構成

表 1 先行研究で利用されたミューテーション演算子
ミューテーション演算子

変換例
変換前

変換後

Conditional Boundary

a<b

a<=b

Increments

n++

n–

Invert Negatives

-n

n

Math

a+b

a-b

Negate Conditionals

a==b

a!=b

Void Method Calls

method();;Primitive Returns

return 5;

return 0;

Empty Returns

return "str";

return "";Null Returns

return object;return null;

Change Boolean Literal

true

false

ラムを収集し，1,474 個から 2,481 個のミュータントが得られ

表 2 本研究で追加したミューテーション演算子
ミューテーション演算子

変換例
変換前

変換後

Change Identiﬁer Used

Superclass a

Subclass a

Change Numeric Literalif(x<0)if(x<1)Wrong Function Name

getEdgeCount()

getNodeCount()

Same Function Less Args

method(a,b,c)

method(a,b)

Same Function Change Caller

a.method()b.method()Same Function Swap Args

method(a,b)

method(b,a)

Change Operand

a+b

a+c

More Speciﬁc If

if(a&&b)if(a)Less Speciﬁc If

if(a||b)

if(a)

—3—

1500

"#$""#$#
2000

1000
500

1000

0

0

"#$""#$#

1500

1500

1000

1000

500

500

0

0

図 3 先行研究と本研究のミュータントの生成数の比較

修正できなかったプログラムと修正できたプログラムの十分な比較が行えると考えた．
ミュータントの増加数
図 3 に先行研究と本研究で生成されたミュータントおよび修正できたミュータント数を示す．図 3 の横列は調査対象 ABCの各問題を示す．ABC の 4 題全体を見ると，先行研究で用いら先行研究で利用された
ミューテーション演算子

た．また修正できたプログラムも 15% から 33% 程度得られ，れたミュータント演算子から生成されたミュータントは 2,613が追加され，合わせて 5,372 個となり 51 %増加できた．また，修正できたミュータント数は先行研究の手法では 2,613 個のうち 1,247(48%) であり，本研究の手法で追加された 2,759 個のうち 613(23%) であった．
次に，図 4 にミューテーション演算子毎の先行研究と本研究で生成されたミュータントおよび修正できたミュータント

本研究で追加した
ミューテーション演算子個であった．本研究の手法で新たに 2,759 個のミュータント

数を示す．本研究で導入したミュータントのなかでは，数値を書き換える ChangeNumericLiteral が大部分を占める 2,844 個
図 4 ミューテーション演算子毎のミュータント修正数存在した．その中で 22% の 614 個が修正できた．
本研究で導入したミュータント演算子や先行研究で用いられていたミュータント演算子の中にはミュータントを生成できなかった演算子が存在した．生成できなかった演算子には，メソッドを呼び出し文を書き換えるミューテーション演算子がある．これは ABC の比較的単純なプログラムを対象にしているため，他のメソッドに依存せず単一のメソッド内で処理を記述できてしまうことが要因であった．また，ミューテーショ
ン対象のメソッドを main メソッドおよび solve メソッドと限定し，これらは void 型であったため，return 文を書き換える
ミューテーション演算子もミュータントを生成できなかった．
ミュータントは生成できたが 3 つの APR ツールのどれでも修正ができなかったミュータントは，VoidMethodCalls, ChangeBooleanLiteral, MoreSpeciﬁcIf, WrongFunctionName の 4 種であった．メソッド呼び出しや，return 文に関するミュータン
表 4 生成されたミュータント数と修正できたミュータント数問題

プログラム数

生成された

修正できた

トは修正が容易でないことがわかる．
4. 3

結果と考察

ミュータント毎の修正率，APR ツールの比較，問題毎の比
較，ステートメント数と修正率，サイクロマチック数と修正率についてそれぞれ述べる．
ミュータント毎の修正率
図 4 から最も修正率の高いミュータントは 71% が修正できた NegateConditionals であるとわかる．条件式を書き換えるミュータントのため，バグ箇所の特定が比較的容易である
可能性が高い．したがって多く修正できたと考えた．また，
ChangeNumericLiteral は 22% が修正でき Math は 23% が修正できたことから，数式や数値に関するバグは APR ツールが他のバグに比べて得意だと言える．
APR ツールの比較
3 種の APR ツールを比較すると jMutRepair が修正できたプ
ログラム数が最も多かった．これは，jMutRepair は条件式ある

ミュータント数

ミュータント数 (%)

ABC101 A

300

1,474

463 (32%)

いは return 文のミューテーションにより修正する戦略のため

ABC101 B

300

2,481

676 (29%)

である．題材とした ABC の解答に高い頻度で if 文が用いらABC102 A

280

1,709

555 (33%)

れるため条件式の論理演算子を書き換えるミュータントを多ABC102 B

280

1,598

196 (15%)

表 3 実験対象プログラム
問題

タイトル

ABC101 A 問題

Eating Symbols Easy

ABC101 B 問題 Digit Sums

概要“+”,“-” のシンボルの出現回数を計算与えられた整数 N の各桁の和によって N が割り切れるか判定

ABC102 A 問題 Multiple of 2 and N与えられた正整数 N と 2 の最小公倍数を計算

ABC102 B 問題 Maximum Diﬀerence

与えられた整数列の 2 要素の差の絶対値の最大を計算—4—

"#$"1.0

	K(FO1SPH

0.5
0.0

0

20

40

"#$#

1.0

0.0

20

	K(FO1SPH

40

"#$"

1.0

60





0.0

10

20

"#$#

1.0

30

	K(FO1SPH





0.5
0

10

20

30

40

50

0

20

40

"#$#

0.0

0.0

	K.VU3FQBJS

20

40

"#$"

1.0

60

	K.VU3FQBJS





0.0

10

20

"#$#

1.0

30

	K.VU3FQBJS





0.5
0.0

0

10

20

30

40

0

20

40

"#$#60	$BSEVNFO





0.5
80

0.5





1.0




0

	$BSEVNFO

0.5

60

0.5

"#$"

1.0





1.0

80

	K(FO1SPH

0.5

0.0

0.0




0

	K.VU3FQBJS

0.5

60

0.5

"#$"

1.0





50

0.0

0

20

40

"#$"

1.0

60

80

	$BSEVNFO





0.5
0.0

10

20

"#$#

1.0

30

	$BSEVNFO





0.5
0.0

0

10

20

30

40

50

図 5 ステートメント数に対する自動修正適合性

く生成し，jMutRepair の戦略に合致するミュータントが多く複雑なプログラムは自動修正適合性が低く，変数の宣言文や存在した．対して，ABC の問題は数行に渡るような複雑な計

代入文，if 文が含まれているほうが修正しやすいことがわか算を必要とせず演算処理を行う文が少ないため，文を再利用しる．また，ABC の A 問題の 20 から 40 のステートメント数をた書き換えを戦略とする jGenProg や Cardumen は jMutRepair

持つプログラムは，修正できなかったミュータント数に対しに比べて修正できるミュータントが少なかった．

て修正できたミュータント数が多かった．このことから，同問題毎の比較

じ処理でも複数の文に処理を分解し，ステートメント数を増

表 4 や，図 5 および図 6 から ABC102 B 問題は他の問題にやすことで自動修正適合性が向上する可能性があると考えた．

比べ，修正できたプログラムの数が少ないことがわかる．他のサイクロマチック数と修正率

問題は入力として 1 つの整数や 4 字程度の文字列が与えられ最後に，図 6 のサイクロマチック数については，サイクロ

るのに対し，ABC102 B 問題は配列が入力として与えられる．

マチック数が小さくプログラムが複雑でないほど修正できる

配列の各要素へのアクセスや for 文によるループなどの処理

ミュータントが多い傾向があるとわかった．

が必要となり，他の問題よりプログラム構造が複雑になっていた．そのため修正率が低くなっていると考えた．
ステートメント数と修正率

5. 妥当性への脅威
本論文の段階では，ABC の限られた問題にしか調査が行え

図 5 および図 6 に調査結果を示す．各グラフの横軸は，図 5ていないため，ABC の各問題の特性がプログラムに現れ，生はステートメント数であり，図 6 はサイクロマチック数であ成されるミュータントや修正可否に対して大きく影響している．縦軸は修正できたミュータント数の割合である自動修正

る可能性がある．また，3 種類の限られた APR ツールに対し適合性を示している．グラフの各点の大きさと濃さは，そのてのみしか実験を行っていないため，特定のツールの戦略や点を満たすプログラムの数から対数をとった値で表現されて特性に偏った結果が得られている可能性がある．また，実験いる．サイズが大きく色の濃い点はその点を満たすプログラ

において個体を変異させる最大世代数や個体数に制限を設けムが多く存在し，対してサイズの小さく色の薄い点はその点たため，制限を変更することで違った結果が得られる可能性を満たすプログラムは少ないことを示している．全体の縦列がある．さらに，ABC の各問題に対するテストケースが少なには APR ツールである jGenProg, jMutRepair, Cardumen の結いため，与えれられたテストケースのみ成功する回答が得ら

果を，横列には ABC の各問題についての結果を示している．

れる可能性がある．

図 5 から三項演算子を用いて必要な処理を 1 行に収めて記述するような 1 つのステートメントのみからなるプログラムは修正できないとわかる．このことから，ステートメントが6. お わ り に本研究では，先行研究において提案された自動修正適合性に

—5—

1.0

"#$"	K(FO1SPH

0.5
0.0

1.0

5

10

"#$#

0.0

5

1.0

2.5

5.0

7.5

"#$#5

15

"#$"

1.0

2.5

5.0

"#$#

0.5
0.0

15

5

1.0

0.0

15

10

1.0

15

10.0 12.5

	K.VU3FQBJS
105	$BSEVNFO


10

"#$#0.5

	K.VU3FQBJS

7.5

"#$"0.5

	K.VU3FQBJS


5

0.5
0.0	K.VU3FQBJS
10

"#$#

0.0

1.0

10.0 12.5

10

5

0.5

	K(FO1SPH

0.5
0.0

1.0

	K(FO1SPH


0.5
0.0

0.0

15

10

"#$""#$"0.5

	K(FO1SPH

0.5

1.0

1.0





15

0.0

1.0

	$BSEVNFO




5

10

"#$"

1.0

2.5

5.0

"#$#

0.5
0.0

5

15

	$BSEVNFO




0.5
0.0

15

7.5

10.0 12.5

	$BSEVNFO


1015

図 6 サイクロマチック数に対する自動修正適合性ついて調査を行った．自動修正適合性とは APR が対象のプログラムに対してどの程度効果的に作用するかを表す指標である．自動修正適合性の利用により，開発者はこの数値が高い[4]

ソフトウェアを開発できるようになり，その結果として APR技術が多くのバグを修正できるようになる．どのようなプログラム構造が APR にとって修正しやすいか調査を行うため，[5]

AtCoder の解答プログラム群を利用し同じ機能を持つ，異なる構造のプログラムを実験対象とした．また，SStuBs のバグパ
ターンを利用し，ミューテーション演算子を先行研究よりも[6]多く用いることで，より信頼性の高い数値を算出できるように実験を行った．調査の結果，ABC の各問題で用いられたプ
ログラム構造による自動修正適合性の差が存在し，APR ツー
ルの得意不得意が顕著であることがわかった．
今後の調査では，実験対象プログラムを増やした分析や APR[7]

ツールの種類の増加を行う予定である．また，今回の調査ではオーバーフィットを考慮していないため，オーバーフィッ
トを考慮するより厳しい指標の自動修正適合性の算出も行う[8]

予定である．
謝辞 本研究は一部 JSPS 科研費 JP21K18302 の助成を得た．
文

[9]

献

[1] B. Hailpern and P. Santhanam, “Software debugging, testing, and veriﬁcation,” IBM Systems Journal, vol.41, no.1,
pp.4–12, 2002.
[2] L. Gazzola, D. Micucci, and L. Mariani, “Automatic software
repair: A survey,” IEEE Transactions on Software Engineering, vol.45, no.1, pp.34–67, 2019.
[3] K. Liu , S. Wang , A. Koyuncu , K. Kim, T.e.F. Bissyand´ e , D. Kim, P. Wu, J. Klein, X. Mao, and Y.L.
Traon, “On the eﬃciency of test suite based program repair:

[10]

[11]

A systematic assessment of 16 automated repair systems forjava programs,” Proc. International Conference on Software
Engineering, p.615–627, 2020.
九間哲士，肥後芳樹，まつ本真佑，楠本真二，安田和矢，“自動修正適合性：新しいソフトウェア品質指標とその計測，” ソフ
トウェアエンジニアリングシンポジウム 2021 論文集，第 2021
巻，pp.51–58，2021．
J. Yi, S.H. Tan, S. Mechtaev, M. Bö hme, and A. Roychoudhury, “A correlation study between automated program repair and test-suite metrics,” Proc. International Conference
on Software Engineering, p.24, 2018.
T. Durieux, F. Madeiral, M. Martinez, and R. Abreu, “Empirical review of java program repair tools: a large-scale experiment on 2,141 bugs and 23,551 repair attempts,” Proc.
Joint Meeting on European Software Engineering Conference
and Symposium on the Foundations of Software Engineering,pp.302–313, 2019.
H. Coles, T. Laurent, C. Henard, M. Papadakis, and A.
Ventresque, “Pit: A practical mutation testing tool for java
(demo),” Proc. International Symposium on Software Testing and Analysis, p.449–452, 2016.
R.M. Karampatsis and C. Sutton, “How often do singlestatement bugs occur? the manysstubs4j dataset,” Proc.
International Conference on Mining Software Repositories,
p.573–577, 2020.
Y. Yuan and W. Banzhaf, “Arja: Automated repair ofjava programs via multi-objective genetic programming,”
IEEE Transactions on Software Engineering, vol.46, no.10,
pp.1040–1067, 2020.
M. Martinez and M. Monperrus, “Astor: A program repair
library for java,” Proc. International Symposium on Software
Testing and Analysis, pp.441–444, 2016.
M. Martinez and M. Monperrus, “Ultra-large repair search
space with automatically mined templates: The cardumen
mode of astor,” Proc. International Symposium on Search
Based Software Engineering, pp.65–86, 2018.

—6—