diff --git a/scripts/mutation-evosuite.sh b/scripts/mutation-evosuite.sh
index 8f03e175..4e45924f 100755
--- a/scripts/mutation-evosuite.sh
+++ b/scripts/mutation-evosuite.sh
@@ -23,7 +23,7 @@
#------------------------------------------------------------------------------
# Options (command-line arguments):
#------------------------------------------------------------------------------
-USAGE_STRING="usage: mutation-evosuite.sh [-o RESULTS_CSV] [-t total_time] [-c time_per_class] [-n num_iterations] [-r] [-v] [-h] TEST-CASE-NAME
+USAGE_STRING="usage: mutation-evosuite.sh [-o RESULTS_CSV] [-t total_time] [-c time_per_class] [-n num_iterations] [-s] [-r] [-v] [-h] TEST-CASE-NAME
-o N Write experiment results to this CSV file (N should end in '.csv').
If the file does not exist, a header row will be created automatically.
Paths are not allowed; only a filename may be given.
@@ -31,6 +31,7 @@ USAGE_STRING="usage: mutation-evosuite.sh [-o RESULTS_CSV] [-t total_time] [-c t
-c N Per-class time limit (in seconds, default: 2s/class).
Mutually exclusive with -t.
-n N Number of iterations to run the experiment (default: 1).
+ -s Skip mutation analysis (only run test generation and coverage).
-r Redirect logs and diagnostics to results/result/mutation_output.txt.
-v Enables verbose mode.
-h Displays this help message.
@@ -83,10 +84,11 @@ fi
NUM_LOOP=1 # Number of experiment runs (10 in GRT paper)
VERBOSE=0 # Verbose option
REDIRECT=0 # Redirect output to mutation_output.txt
+SKIP_MUTATION=0 # Skip mutation analysis
UUID=$(uuidgen) # Generate a unique identifier per instance
# Parse command-line arguments
-while getopts ":hvro:t:c:n:" opt; do
+while getopts ":hvrso:t:c:n:" opt; do
case ${opt} in
h)
# Display help message
@@ -101,6 +103,10 @@ while getopts ":hvro:t:c:n:" opt; do
# Redirect output to a log file
REDIRECT=1
;;
+ s)
+ # Skip mutation analysis
+ SKIP_MUTATION=1
+ ;;
o)
RESULTS_CSV="$OPTARG"
;;
@@ -490,6 +496,13 @@ for i in $(seq 1 "$NUM_LOOP"); do
"$MAJOR_HOME"/bin/ant -f "$SCRIPT_DIR"/program-config/"$1"/${buildfile} -Dbasedir="$SCRIPT_DIR" -Dbindir="$SCRIPT_DIR/build/bin/$FILE_SUFFIX" -Dresultdir="$RESULT_DIR" -Dmutator="mml:$MAJOR_HOME/mml/all.mml.bin" -Dsrc="$JAVA_SRC_DIR" -Dtargetdir="$COVERAGE_DIRECTORY" -Dlibdir="$SCRIPT_DIR/build/lib/$UUID" compile.mutation
"$MAJOR_HOME"/bin/ant -f "$SCRIPT_DIR"/program-config/"$1"/${buildfile} -Dbasedir="$SCRIPT_DIR" -Dbindir="$SCRIPT_DIR/build/bin/$FILE_SUFFIX" -Dresultdir="$RESULT_DIR" -Dmutator="mml:$MAJOR_HOME/mml/all.mml.bin" -Dsrc="$JAVA_SRC_DIR" -Dtargetdir="$COVERAGE_DIRECTORY" -Dlibdir="$SCRIPT_DIR/build/lib/$UUID" compile.jacoco
+ PYTHON_EXECUTABLE=$(command -v python3 2> /dev/null || command -v python 2> /dev/null)
+ if [ -z "$PYTHON_EXECUTABLE" ]; then
+ echo "Error: Python is not installed." >&2
+ exit 2
+ fi
+ "$PYTHON_EXECUTABLE" "$SCRIPT_DIR"/trim_mutants.py "$RESULT_DIR/mutants.log"
+
echo
echo "Compiling tests..."
if [[ "$VERBOSE" -eq 1 ]]; then
@@ -530,28 +543,30 @@ for i in $(seq 1 "$NUM_LOOP"); do
# resulting in a lot of methods being excluded from mutation analysis.
# We use a Python script to convert the tests.
if [ "$SUBJECT_PROGRAM" == "jdom-1.0" ]; then
- PYTHON_EXECUTABLE=$(command -v python3 2> /dev/null || command -v python 2> /dev/null)
- if [ -z "$PYTHON_EXECUTABLE" ]; then
- echo "Error: Python is not installed." >&2
- exit 2
- fi
"$PYTHON_EXECUTABLE" "$SCRIPT_DIR"/convert_test_runners.py "$TEST_DIRECTORY" --mode evosuite-to-randoop
fi
- echo
- echo "Running tests with mutation analysis..."
- if [[ "$VERBOSE" -eq 1 ]]; then
- echo command:
- echo "$MAJOR_HOME"/bin/"$ANT" -f "$SCRIPT_DIR"/program-config/"$1"/${buildfile} -Dbasedir="$SCRIPT_DIR" -Dbindir="$SCRIPT_DIR/build/bin/$FILE_SUFFIX" -Dresultdir="$RESULT_DIR" -Dtest="$TEST_DIRECTORY" -Dlibdir="$SCRIPT_DIR/build/lib/$UUID" mutation.test
+ # Run mutation analysis unless -s flag is set
+ if [[ "$SKIP_MUTATION" -eq 0 ]]; then
+ echo
+ echo "Running tests with mutation analysis..."
+ if [[ "$VERBOSE" -eq 1 ]]; then
+ echo command:
+ echo "$MAJOR_HOME"/bin/"$ANT" -f "$SCRIPT_DIR"/program-config/"$1"/${buildfile} -Dbasedir="$SCRIPT_DIR" -Dbindir="$SCRIPT_DIR/build/bin/$FILE_SUFFIX" -Dresultdir="$RESULT_DIR" -Dtest="$TEST_DIRECTORY" -Dlibdir="$SCRIPT_DIR/build/lib/$UUID" mutation.test
+ fi
+ echo
+ "$MAJOR_HOME"/bin/"$ANT" -f "$SCRIPT_DIR"/program-config/"$1"/${buildfile} -Dbasedir="$SCRIPT_DIR" -Dbindir="$SCRIPT_DIR/build/bin/$FILE_SUFFIX" -Dresultdir="$RESULT_DIR" -Dtest="$TEST_DIRECTORY" -Dlibdir="$SCRIPT_DIR/build/lib/$UUID" mutation.test
+
+ # Calculate Mutation Score
+ mutants_generated=$(awk -F, 'NR==2 {print $2}' "$RESULT_DIR"/summary.csv)
+ mutants_killed=$(awk -F, 'NR==2 {print $4}' "$RESULT_DIR"/summary.csv)
+ mutation_score=$(echo "scale=4; $mutants_killed / $mutants_generated * 100" | bc)
+ mutation_score=$(printf "%.2f" "$mutation_score")
+ else
+ echo
+ echo "Skipping mutation analysis (use -s flag)."
+ mutation_score="N/A"
fi
- echo
- "$MAJOR_HOME"/bin/"$ANT" -f "$SCRIPT_DIR"/program-config/"$1"/${buildfile} -Dbasedir="$SCRIPT_DIR" -Dbindir="$SCRIPT_DIR/build/bin/$FILE_SUFFIX" -Dresultdir="$RESULT_DIR" -Dtest="$TEST_DIRECTORY" -Dlibdir="$SCRIPT_DIR/build/lib/$UUID" mutation.test
-
- # Calculate Mutation Score
- mutants_generated=$(awk -F, 'NR==2 {print $1}' "$RESULT_DIR"/summary.csv)
- mutants_killed=$(awk -F, 'NR==2 {print $4}' "$RESULT_DIR"/summary.csv)
- mutation_score=$(echo "scale=4; $mutants_killed / $mutants_generated * 100" | bc)
- mutation_score=$(printf "%.2f" "$mutation_score")
echo "Instruction Coverage: $instruction_coverage%"
echo "Branch Coverage: $branch_coverage%"
diff --git a/scripts/mutation-randoop.sh b/scripts/mutation-randoop.sh
index 3bd90d3f..497aea2f 100755
--- a/scripts/mutation-randoop.sh
+++ b/scripts/mutation-randoop.sh
@@ -23,7 +23,7 @@
#------------------------------------------------------------------------------
# Options (command-line arguments):
#------------------------------------------------------------------------------
-USAGE_STRING="usage: mutation-randoop.sh [-f features] [-o RESULTS_CSV] [-t total_time] [-c time_per_class] [-n num_iterations] [-r] [-v] [-h] TEST-CASE-NAME
+USAGE_STRING="usage: mutation-randoop.sh [-f features] [-o RESULTS_CSV] [-t total_time] [-c time_per_class] [-n num_iterations] [-s] [-r] [-v] [-h] TEST-CASE-NAME
-f Specify the Randoop features to use.
Available features: BASELINE, BLOODHOUND, ORIENTEERING, DETECTIVE, GRT_FUZZING, ELEPHANT_BRAIN, CONSTANT_MINING.
example usage: -f BASELINE,BLOODHOUND
@@ -34,6 +34,7 @@ USAGE_STRING="usage: mutation-randoop.sh [-f features] [-o RESULTS_CSV] [-t tota
-c N Per-class time limit (in seconds, default: 2s/class).
Mutually exclusive with -t.
-n N Number of iterations to run the experiment (default: 1).
+ -s Skip mutation analysis (only run test generation and coverage).
-r Redirect logs and diagnostics to results/result/mutation_output.txt.
-v Enables verbose mode.
-h Displays this help message.
@@ -92,10 +93,11 @@ fi
NUM_LOOP=1 # Number of experiment runs (10 in GRT paper)
VERBOSE=0 # Verbose option
REDIRECT=0 # Redirect output to mutation_output.txt
+SKIP_MUTATION=0 # Skip mutation analysis
UUID=$(uuidgen) # Generate a unique identifier per instance
# Parse command-line arguments
-while getopts ":hvrf:o:t:c:n:" opt; do
+while getopts ":hvrsf:o:t:c:n:" opt; do
case ${opt} in
h)
# Display help message
@@ -110,6 +112,10 @@ while getopts ":hvrf:o:t:c:n:" opt; do
# Redirect output to a log file
REDIRECT=1
;;
+ s)
+ # Skip mutation analysis
+ SKIP_MUTATION=1
+ ;;
f)
FEATURES_OPT="$OPTARG"
;;
@@ -161,10 +167,10 @@ declare -A FEATURE_FLAGS
FEATURE_FLAGS=(
["BLOODHOUND"]="--method-selection=BLOODHOUND"
["ORIENTEERING"]="--input-selection=ORIENTEERING"
- ["DETECTIVE"]="--demand-driven=true"
+ ["DETECTIVE"]="--call-non-sut-methods=true"
["GRT_FUZZING"]="--grt-fuzzing=true"
["ELEPHANT_BRAIN"]="--cast-to-run-time-type=true"
- ["CONSTANT_MINING"]="--constant-mining=true"
+ ["CONSTANT_MINING"]="--literal-tfidf=true --literal-tfidf-probability=1.0 --include-superclass-literals=true"
["BASELINE"]=""
)
@@ -174,7 +180,10 @@ for feat in "${RANDOOP_FEATURES[@]}"; do
if [[ "${FEATURE_FLAGS[$feat]+exists}" ]]; then
flag="${FEATURE_FLAGS[$feat]}"
if [[ -n "$flag" ]]; then
- EXPANDED_FEATURE_FLAGS+=("$flag")
+ # Split multi-argument feature strings into separate array entries
+ # shellcheck disable=SC2206
+ split_flags=($flag)
+ EXPANDED_FEATURE_FLAGS+=("${split_flags[@]}")
fi
else
echo "${SCRIPT_NAME}: error: unknown feature '$feat'"
@@ -610,6 +619,13 @@ for i in $(seq 1 "$NUM_LOOP"); do
"$MAJOR_HOME"/bin/ant -f "$SCRIPT_DIR"/program-config/"$1"/${buildfile} -Dbasedir="$SCRIPT_DIR" -Dbindir="$SCRIPT_DIR/build/bin/$FILE_SUFFIX" -Dresultdir="$RESULT_DIR" -Dmutator="mml:$MAJOR_HOME/mml/all.mml.bin" -Dsrc="$JAVA_SRC_DIR" -Dtargetdir="$COVERAGE_DIRECTORY" -Dlibdir="$SCRIPT_DIR/build/lib/$UUID" compile.mutation
"$MAJOR_HOME"/bin/ant -f "$SCRIPT_DIR"/program-config/"$1"/${buildfile} -Dbasedir="$SCRIPT_DIR" -Dbindir="$SCRIPT_DIR/build/bin/$FILE_SUFFIX" -Dresultdir="$RESULT_DIR" -Dmutator="mml:$MAJOR_HOME/mml/all.mml.bin" -Dsrc="$JAVA_SRC_DIR" -Dtargetdir="$COVERAGE_DIRECTORY" -Dlibdir="$SCRIPT_DIR/build/lib/$UUID" compile.jacoco
+ PYTHON_EXECUTABLE=$(command -v python3 2> /dev/null || command -v python 2> /dev/null)
+ if [ -z "$PYTHON_EXECUTABLE" ]; then
+ echo "Error: Python is not installed." >&2
+ exit 2
+ fi
+ "$PYTHON_EXECUTABLE" "$SCRIPT_DIR"/trim_mutants.py "$RESULT_DIR/mutants.log"
+
echo
echo "Compiling tests..."
if [[ "$VERBOSE" -eq 1 ]]; then
@@ -653,28 +669,30 @@ for i in $(seq 1 "$NUM_LOOP"); do
# proper isolation and compatibility for accurate mutant coverage.
if [ "$SUBJECT_PROGRAM" == "hamcrest-core-1.3" ]; then
- PYTHON_EXECUTABLE=$(command -v python3 2> /dev/null || command -v python 2> /dev/null)
- if [ -z "$PYTHON_EXECUTABLE" ]; then
- echo "Error: Python is not installed." >&2
- exit 1
- fi
"$PYTHON_EXECUTABLE" "$SCRIPT_DIR"/convert_test_runners.py "$TEST_DIRECTORY" --mode randoop-to-evosuite
fi
- echo
- echo "Running tests with mutation analysis..."
- if [[ "$VERBOSE" -eq 1 ]]; then
- echo command:
- echo "$MAJOR_HOME"/bin/"$ANT" -f "$SCRIPT_DIR"/program-config/"$1"/${buildfile} -Dbasedir="$SCRIPT_DIR" -Dbindir="$SCRIPT_DIR/build/bin/$FILE_SUFFIX" -Dresultdir="$RESULT_DIR" -Dtest="$TEST_DIRECTORY" -Dlibdir="$SCRIPT_DIR/build/lib/$UUID" mutation.test
+ # Run mutation analysis unless -s flag is set
+ if [[ "$SKIP_MUTATION" -eq 0 ]]; then
+ echo
+ echo "Running tests with mutation analysis..."
+ if [[ "$VERBOSE" -eq 1 ]]; then
+ echo command:
+ echo "$MAJOR_HOME"/bin/"$ANT" -f "$SCRIPT_DIR"/program-config/"$1"/${buildfile} -Dbasedir="$SCRIPT_DIR" -Dbindir="$SCRIPT_DIR/build/bin/$FILE_SUFFIX" -Dresultdir="$RESULT_DIR" -Dtest="$TEST_DIRECTORY" -Dlibdir="$SCRIPT_DIR/build/lib/$UUID" mutation.test
+ fi
+ echo
+ "$MAJOR_HOME"/bin/"$ANT" -f "$SCRIPT_DIR"/program-config/"$1"/${buildfile} -Dbasedir="$SCRIPT_DIR" -Dbindir="$SCRIPT_DIR/build/bin/$FILE_SUFFIX" -Dresultdir="$RESULT_DIR" -Dtest="$TEST_DIRECTORY" -Dlibdir="$SCRIPT_DIR/build/lib/$UUID" mutation.test
+
+ # Calculate Mutation Score
+ mutants_generated=$(awk -F, 'NR==2 {print $2}' "$RESULT_DIR"/summary.csv)
+ mutants_killed=$(awk -F, 'NR==2 {print $4}' "$RESULT_DIR"/summary.csv)
+ mutation_score=$(echo "scale=4; $mutants_killed / $mutants_generated * 100" | bc)
+ mutation_score=$(printf "%.2f" "$mutation_score")
+ else
+ echo
+ echo "Skipping mutation analysis (use -s flag)."
+ mutation_score="N/A"
fi
- echo
- "$MAJOR_HOME"/bin/"$ANT" -f "$SCRIPT_DIR"/program-config/"$1"/${buildfile} -Dbasedir="$SCRIPT_DIR" -Dbindir="$SCRIPT_DIR/build/bin/$FILE_SUFFIX" -Dresultdir="$RESULT_DIR" -Dtest="$TEST_DIRECTORY" -Dlibdir="$SCRIPT_DIR/build/lib/$UUID" mutation.test
-
- # Calculate Mutation Score
- mutants_generated=$(awk -F, 'NR==2 {print $1}' "$RESULT_DIR"/summary.csv)
- mutants_killed=$(awk -F, 'NR==2 {print $4}' "$RESULT_DIR"/summary.csv)
- mutation_score=$(echo "scale=4; $mutants_killed / $mutants_generated * 100" | bc)
- mutation_score=$(printf "%.2f" "$mutation_score")
echo "Instruction Coverage: $instruction_coverage%"
echo "Branch Coverage: $branch_coverage%"
diff --git a/scripts/program-config/ClassViewer-5.0.5b/build-evosuite.xml b/scripts/program-config/ClassViewer-5.0.5b/build-evosuite.xml
index cbfc801f..8b89608f 100644
--- a/scripts/program-config/ClassViewer-5.0.5b/build-evosuite.xml
+++ b/scripts/program-config/ClassViewer-5.0.5b/build-evosuite.xml
@@ -83,6 +83,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/ClassViewer-5.0.5b/build-randoop.xml b/scripts/program-config/ClassViewer-5.0.5b/build-randoop.xml
index e5e856ee..5052f683 100644
--- a/scripts/program-config/ClassViewer-5.0.5b/build-randoop.xml
+++ b/scripts/program-config/ClassViewer-5.0.5b/build-randoop.xml
@@ -83,6 +83,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/JSAP-2.1/build-evosuite.xml b/scripts/program-config/JSAP-2.1/build-evosuite.xml
index caf99a9e..eb52d87c 100644
--- a/scripts/program-config/JSAP-2.1/build-evosuite.xml
+++ b/scripts/program-config/JSAP-2.1/build-evosuite.xml
@@ -87,6 +87,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/JSAP-2.1/build-randoop.xml b/scripts/program-config/JSAP-2.1/build-randoop.xml
index 4c3c75e0..ae6018c6 100644
--- a/scripts/program-config/JSAP-2.1/build-randoop.xml
+++ b/scripts/program-config/JSAP-2.1/build-randoop.xml
@@ -86,6 +86,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/a4j-1.0b/build-evosuite.xml b/scripts/program-config/a4j-1.0b/build-evosuite.xml
index cd38c317..9c24fd31 100644
--- a/scripts/program-config/a4j-1.0b/build-evosuite.xml
+++ b/scripts/program-config/a4j-1.0b/build-evosuite.xml
@@ -83,6 +83,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/a4j-1.0b/build-randoop.xml b/scripts/program-config/a4j-1.0b/build-randoop.xml
index 5bd2a92b..a8d98830 100644
--- a/scripts/program-config/a4j-1.0b/build-randoop.xml
+++ b/scripts/program-config/a4j-1.0b/build-randoop.xml
@@ -81,6 +81,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/asm-5.0.1/build-evosuite.xml b/scripts/program-config/asm-5.0.1/build-evosuite.xml
index 7a0026cf..f18f8750 100644
--- a/scripts/program-config/asm-5.0.1/build-evosuite.xml
+++ b/scripts/program-config/asm-5.0.1/build-evosuite.xml
@@ -85,6 +85,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/asm-5.0.1/build-randoop.xml b/scripts/program-config/asm-5.0.1/build-randoop.xml
index 83387e6d..d951e78b 100644
--- a/scripts/program-config/asm-5.0.1/build-randoop.xml
+++ b/scripts/program-config/asm-5.0.1/build-randoop.xml
@@ -84,6 +84,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/bcel-5.2/build-evosuite.xml b/scripts/program-config/bcel-5.2/build-evosuite.xml
index fbc506fe..f43f2661 100644
--- a/scripts/program-config/bcel-5.2/build-evosuite.xml
+++ b/scripts/program-config/bcel-5.2/build-evosuite.xml
@@ -85,6 +85,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/bcel-5.2/build-randoop.xml b/scripts/program-config/bcel-5.2/build-randoop.xml
index 3f265342..31bf291f 100644
--- a/scripts/program-config/bcel-5.2/build-randoop.xml
+++ b/scripts/program-config/bcel-5.2/build-randoop.xml
@@ -85,6 +85,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/commons-cli-1.2/build-evosuite.xml b/scripts/program-config/commons-cli-1.2/build-evosuite.xml
index cbfc801f..d906458c 100644
--- a/scripts/program-config/commons-cli-1.2/build-evosuite.xml
+++ b/scripts/program-config/commons-cli-1.2/build-evosuite.xml
@@ -1,131 +1,132 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/scripts/program-config/commons-cli-1.2/build-randoop.xml b/scripts/program-config/commons-cli-1.2/build-randoop.xml
index 7640e67a..b5460cf4 100644
--- a/scripts/program-config/commons-cli-1.2/build-randoop.xml
+++ b/scripts/program-config/commons-cli-1.2/build-randoop.xml
@@ -82,6 +82,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/commons-codec-1.9/build-evosuite.xml b/scripts/program-config/commons-codec-1.9/build-evosuite.xml
index 1f5e005b..fd8cb636 100644
--- a/scripts/program-config/commons-codec-1.9/build-evosuite.xml
+++ b/scripts/program-config/commons-codec-1.9/build-evosuite.xml
@@ -83,6 +83,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/commons-codec-1.9/build-randoop.xml b/scripts/program-config/commons-codec-1.9/build-randoop.xml
index 7640e67a..b5460cf4 100644
--- a/scripts/program-config/commons-codec-1.9/build-randoop.xml
+++ b/scripts/program-config/commons-codec-1.9/build-randoop.xml
@@ -82,6 +82,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/commons-collections4-4.0/build-evosuite.xml b/scripts/program-config/commons-collections4-4.0/build-evosuite.xml
index fa34eaff..f14280f6 100644
--- a/scripts/program-config/commons-collections4-4.0/build-evosuite.xml
+++ b/scripts/program-config/commons-collections4-4.0/build-evosuite.xml
@@ -87,6 +87,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/commons-collections4-4.0/build-randoop.xml b/scripts/program-config/commons-collections4-4.0/build-randoop.xml
index 96e060db..1f2b230e 100644
--- a/scripts/program-config/commons-collections4-4.0/build-randoop.xml
+++ b/scripts/program-config/commons-collections4-4.0/build-randoop.xml
@@ -86,6 +86,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/commons-compress-1.8/build-evosuite.xml b/scripts/program-config/commons-compress-1.8/build-evosuite.xml
index cbfc801f..8b89608f 100644
--- a/scripts/program-config/commons-compress-1.8/build-evosuite.xml
+++ b/scripts/program-config/commons-compress-1.8/build-evosuite.xml
@@ -83,6 +83,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/commons-compress-1.8/build-randoop.xml b/scripts/program-config/commons-compress-1.8/build-randoop.xml
index 5bd2a92b..a8d98830 100644
--- a/scripts/program-config/commons-compress-1.8/build-randoop.xml
+++ b/scripts/program-config/commons-compress-1.8/build-randoop.xml
@@ -81,6 +81,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/commons-lang3-3.0/build-evosuite.xml b/scripts/program-config/commons-lang3-3.0/build-evosuite.xml
index ac9aa599..22fed805 100644
--- a/scripts/program-config/commons-lang3-3.0/build-evosuite.xml
+++ b/scripts/program-config/commons-lang3-3.0/build-evosuite.xml
@@ -89,6 +89,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/commons-lang3-3.0/build-randoop.xml b/scripts/program-config/commons-lang3-3.0/build-randoop.xml
index 273edb19..e39c1027 100644
--- a/scripts/program-config/commons-lang3-3.0/build-randoop.xml
+++ b/scripts/program-config/commons-lang3-3.0/build-randoop.xml
@@ -88,6 +88,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/commons-math3-3.2/build-evosuite.xml b/scripts/program-config/commons-math3-3.2/build-evosuite.xml
index 23c6ba5b..25b291f8 100644
--- a/scripts/program-config/commons-math3-3.2/build-evosuite.xml
+++ b/scripts/program-config/commons-math3-3.2/build-evosuite.xml
@@ -87,6 +87,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/commons-math3-3.2/build-randoop.xml b/scripts/program-config/commons-math3-3.2/build-randoop.xml
index 335e590e..a785024a 100644
--- a/scripts/program-config/commons-math3-3.2/build-randoop.xml
+++ b/scripts/program-config/commons-math3-3.2/build-randoop.xml
@@ -86,6 +86,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/commons-primitives-1.0/build-evosuite.xml b/scripts/program-config/commons-primitives-1.0/build-evosuite.xml
index cbfc801f..8b89608f 100644
--- a/scripts/program-config/commons-primitives-1.0/build-evosuite.xml
+++ b/scripts/program-config/commons-primitives-1.0/build-evosuite.xml
@@ -83,6 +83,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/commons-primitives-1.0/build-randoop.xml b/scripts/program-config/commons-primitives-1.0/build-randoop.xml
index 7640e67a..b5460cf4 100644
--- a/scripts/program-config/commons-primitives-1.0/build-randoop.xml
+++ b/scripts/program-config/commons-primitives-1.0/build-randoop.xml
@@ -82,6 +82,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/dcParseArgs-10.2008/build-evosuite.xml b/scripts/program-config/dcParseArgs-10.2008/build-evosuite.xml
index f6be1989..1663387b 100644
--- a/scripts/program-config/dcParseArgs-10.2008/build-evosuite.xml
+++ b/scripts/program-config/dcParseArgs-10.2008/build-evosuite.xml
@@ -87,6 +87,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/dcParseArgs-10.2008/build-randoop.xml b/scripts/program-config/dcParseArgs-10.2008/build-randoop.xml
index 3022c8d0..c0f54f75 100644
--- a/scripts/program-config/dcParseArgs-10.2008/build-randoop.xml
+++ b/scripts/program-config/dcParseArgs-10.2008/build-randoop.xml
@@ -86,6 +86,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/easymock-3.2/build-evosuite.xml b/scripts/program-config/easymock-3.2/build-evosuite.xml
index 5fd5f0dc..c745bb04 100644
--- a/scripts/program-config/easymock-3.2/build-evosuite.xml
+++ b/scripts/program-config/easymock-3.2/build-evosuite.xml
@@ -82,6 +82,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/easymock-3.2/build-randoop.xml b/scripts/program-config/easymock-3.2/build-randoop.xml
index 7640e67a..b5460cf4 100644
--- a/scripts/program-config/easymock-3.2/build-randoop.xml
+++ b/scripts/program-config/easymock-3.2/build-randoop.xml
@@ -82,6 +82,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/fixsuite-r48/build-evosuite.xml b/scripts/program-config/fixsuite-r48/build-evosuite.xml
index cbfc801f..8b89608f 100644
--- a/scripts/program-config/fixsuite-r48/build-evosuite.xml
+++ b/scripts/program-config/fixsuite-r48/build-evosuite.xml
@@ -83,6 +83,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/fixsuite-r48/build-randoop.xml b/scripts/program-config/fixsuite-r48/build-randoop.xml
index e874e90b..8e870772 100644
--- a/scripts/program-config/fixsuite-r48/build-randoop.xml
+++ b/scripts/program-config/fixsuite-r48/build-randoop.xml
@@ -82,6 +82,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/guava-16.0.1/build-evosuite.xml b/scripts/program-config/guava-16.0.1/build-evosuite.xml
index cbfc801f..8b89608f 100644
--- a/scripts/program-config/guava-16.0.1/build-evosuite.xml
+++ b/scripts/program-config/guava-16.0.1/build-evosuite.xml
@@ -83,6 +83,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/guava-16.0.1/build-randoop.xml b/scripts/program-config/guava-16.0.1/build-randoop.xml
index 7640e67a..b5460cf4 100644
--- a/scripts/program-config/guava-16.0.1/build-randoop.xml
+++ b/scripts/program-config/guava-16.0.1/build-randoop.xml
@@ -82,6 +82,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/hamcrest-core-1.3/build-evosuite.xml b/scripts/program-config/hamcrest-core-1.3/build-evosuite.xml
index cbfc801f..8b89608f 100644
--- a/scripts/program-config/hamcrest-core-1.3/build-evosuite.xml
+++ b/scripts/program-config/hamcrest-core-1.3/build-evosuite.xml
@@ -83,6 +83,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/hamcrest-core-1.3/build-randoop.xml b/scripts/program-config/hamcrest-core-1.3/build-randoop.xml
index 02aee272..bea9e796 100644
--- a/scripts/program-config/hamcrest-core-1.3/build-randoop.xml
+++ b/scripts/program-config/hamcrest-core-1.3/build-randoop.xml
@@ -84,6 +84,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/javassist-3.19/build-evosuite.xml b/scripts/program-config/javassist-3.19/build-evosuite.xml
index cbfc801f..8b89608f 100644
--- a/scripts/program-config/javassist-3.19/build-evosuite.xml
+++ b/scripts/program-config/javassist-3.19/build-evosuite.xml
@@ -83,6 +83,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/javassist-3.19/build-randoop.xml b/scripts/program-config/javassist-3.19/build-randoop.xml
index 7640e67a..b5460cf4 100644
--- a/scripts/program-config/javassist-3.19/build-randoop.xml
+++ b/scripts/program-config/javassist-3.19/build-randoop.xml
@@ -82,6 +82,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/javax.mail-1.5.1/build-evosuite.xml b/scripts/program-config/javax.mail-1.5.1/build-evosuite.xml
index cbfc801f..8b89608f 100644
--- a/scripts/program-config/javax.mail-1.5.1/build-evosuite.xml
+++ b/scripts/program-config/javax.mail-1.5.1/build-evosuite.xml
@@ -83,6 +83,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/javax.mail-1.5.1/build-randoop.xml b/scripts/program-config/javax.mail-1.5.1/build-randoop.xml
index 7640e67a..b5460cf4 100644
--- a/scripts/program-config/javax.mail-1.5.1/build-randoop.xml
+++ b/scripts/program-config/javax.mail-1.5.1/build-randoop.xml
@@ -82,6 +82,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/jaxen-1.1.6/build-evosuite.xml b/scripts/program-config/jaxen-1.1.6/build-evosuite.xml
index 5fd5f0dc..c745bb04 100644
--- a/scripts/program-config/jaxen-1.1.6/build-evosuite.xml
+++ b/scripts/program-config/jaxen-1.1.6/build-evosuite.xml
@@ -82,6 +82,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/jaxen-1.1.6/build-randoop.xml b/scripts/program-config/jaxen-1.1.6/build-randoop.xml
index 7640e67a..b5460cf4 100644
--- a/scripts/program-config/jaxen-1.1.6/build-randoop.xml
+++ b/scripts/program-config/jaxen-1.1.6/build-randoop.xml
@@ -82,6 +82,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/jcommander-1.35/build-evosuite.xml b/scripts/program-config/jcommander-1.35/build-evosuite.xml
index cbfc801f..8b89608f 100644
--- a/scripts/program-config/jcommander-1.35/build-evosuite.xml
+++ b/scripts/program-config/jcommander-1.35/build-evosuite.xml
@@ -83,6 +83,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/jcommander-1.35/build-randoop.xml b/scripts/program-config/jcommander-1.35/build-randoop.xml
index 905a4cb7..f955bea4 100644
--- a/scripts/program-config/jcommander-1.35/build-randoop.xml
+++ b/scripts/program-config/jcommander-1.35/build-randoop.xml
@@ -83,6 +83,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/jdom-1.0/build-evosuite.xml b/scripts/program-config/jdom-1.0/build-evosuite.xml
index b741e23d..6b3ed45c 100644
--- a/scripts/program-config/jdom-1.0/build-evosuite.xml
+++ b/scripts/program-config/jdom-1.0/build-evosuite.xml
@@ -85,6 +85,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/jdom-1.0/build-randoop.xml b/scripts/program-config/jdom-1.0/build-randoop.xml
index 2f85388c..577f8bb3 100644
--- a/scripts/program-config/jdom-1.0/build-randoop.xml
+++ b/scripts/program-config/jdom-1.0/build-randoop.xml
@@ -84,6 +84,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/joda-time-2.3/build-evosuite.xml b/scripts/program-config/joda-time-2.3/build-evosuite.xml
index f2a8d40b..2b401805 100644
--- a/scripts/program-config/joda-time-2.3/build-evosuite.xml
+++ b/scripts/program-config/joda-time-2.3/build-evosuite.xml
@@ -83,6 +83,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/../exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/joda-time-2.3/build-randoop.xml b/scripts/program-config/joda-time-2.3/build-randoop.xml
index 7640e67a..b5460cf4 100644
--- a/scripts/program-config/joda-time-2.3/build-randoop.xml
+++ b/scripts/program-config/joda-time-2.3/build-randoop.xml
@@ -82,6 +82,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/jvc-1.1/build-evosuite.xml b/scripts/program-config/jvc-1.1/build-evosuite.xml
index cbfc801f..8b89608f 100644
--- a/scripts/program-config/jvc-1.1/build-evosuite.xml
+++ b/scripts/program-config/jvc-1.1/build-evosuite.xml
@@ -83,6 +83,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/jvc-1.1/build-randoop.xml b/scripts/program-config/jvc-1.1/build-randoop.xml
index 7640e67a..b5460cf4 100644
--- a/scripts/program-config/jvc-1.1/build-randoop.xml
+++ b/scripts/program-config/jvc-1.1/build-randoop.xml
@@ -82,6 +82,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/nekomud-r16/build-evosuite.xml b/scripts/program-config/nekomud-r16/build-evosuite.xml
index cbfc801f..8b89608f 100644
--- a/scripts/program-config/nekomud-r16/build-evosuite.xml
+++ b/scripts/program-config/nekomud-r16/build-evosuite.xml
@@ -83,6 +83,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/nekomud-r16/build-randoop.xml b/scripts/program-config/nekomud-r16/build-randoop.xml
index 7640e67a..b5460cf4 100644
--- a/scripts/program-config/nekomud-r16/build-randoop.xml
+++ b/scripts/program-config/nekomud-r16/build-randoop.xml
@@ -82,6 +82,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/pmd-core-5.2.2/build-evosuite.xml b/scripts/program-config/pmd-core-5.2.2/build-evosuite.xml
index cbfc801f..8b89608f 100644
--- a/scripts/program-config/pmd-core-5.2.2/build-evosuite.xml
+++ b/scripts/program-config/pmd-core-5.2.2/build-evosuite.xml
@@ -83,6 +83,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/pmd-core-5.2.2/build-randoop.xml b/scripts/program-config/pmd-core-5.2.2/build-randoop.xml
index 7640e67a..b5460cf4 100644
--- a/scripts/program-config/pmd-core-5.2.2/build-randoop.xml
+++ b/scripts/program-config/pmd-core-5.2.2/build-randoop.xml
@@ -82,6 +82,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/sat4j-core-2.3.5/build-evosuite.xml b/scripts/program-config/sat4j-core-2.3.5/build-evosuite.xml
index cbfc801f..8b89608f 100644
--- a/scripts/program-config/sat4j-core-2.3.5/build-evosuite.xml
+++ b/scripts/program-config/sat4j-core-2.3.5/build-evosuite.xml
@@ -83,6 +83,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/sat4j-core-2.3.5/build-randoop.xml b/scripts/program-config/sat4j-core-2.3.5/build-randoop.xml
index 7640e67a..b5460cf4 100644
--- a/scripts/program-config/sat4j-core-2.3.5/build-randoop.xml
+++ b/scripts/program-config/sat4j-core-2.3.5/build-randoop.xml
@@ -82,6 +82,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/shiro-core-1.2.3/build-evosuite.xml b/scripts/program-config/shiro-core-1.2.3/build-evosuite.xml
index cbfc801f..8b89608f 100644
--- a/scripts/program-config/shiro-core-1.2.3/build-evosuite.xml
+++ b/scripts/program-config/shiro-core-1.2.3/build-evosuite.xml
@@ -83,6 +83,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/shiro-core-1.2.3/build-randoop.xml b/scripts/program-config/shiro-core-1.2.3/build-randoop.xml
index 7640e67a..b5460cf4 100644
--- a/scripts/program-config/shiro-core-1.2.3/build-randoop.xml
+++ b/scripts/program-config/shiro-core-1.2.3/build-randoop.xml
@@ -82,6 +82,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/slf4j-api-1.7.12/build-evosuite.xml b/scripts/program-config/slf4j-api-1.7.12/build-evosuite.xml
index 7c5d09bb..cf297823 100644
--- a/scripts/program-config/slf4j-api-1.7.12/build-evosuite.xml
+++ b/scripts/program-config/slf4j-api-1.7.12/build-evosuite.xml
@@ -97,6 +97,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/slf4j-api-1.7.12/build-randoop.xml b/scripts/program-config/slf4j-api-1.7.12/build-randoop.xml
index 373fc978..7a533200 100644
--- a/scripts/program-config/slf4j-api-1.7.12/build-randoop.xml
+++ b/scripts/program-config/slf4j-api-1.7.12/build-randoop.xml
@@ -96,6 +96,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/tiny-sql-2.26/build-evosuite.xml b/scripts/program-config/tiny-sql-2.26/build-evosuite.xml
index 876166eb..ec7086bd 100644
--- a/scripts/program-config/tiny-sql-2.26/build-evosuite.xml
+++ b/scripts/program-config/tiny-sql-2.26/build-evosuite.xml
@@ -89,6 +89,7 @@
testOrder="sort_methods"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/program-config/tiny-sql-2.26/build-randoop.xml b/scripts/program-config/tiny-sql-2.26/build-randoop.xml
index 72c46953..d0deb2f3 100644
--- a/scripts/program-config/tiny-sql-2.26/build-randoop.xml
+++ b/scripts/program-config/tiny-sql-2.26/build-randoop.xml
@@ -88,6 +88,7 @@
excludeFailingTests="false"
serializedMapsFile="${resultdir}/preprocessing.ser"
mutantsLogFile="${resultdir}/mutants.log"
+ excludeMutantsFile="${resultdir}/exclude_mutants.txt"
summaryFile="${resultdir}/summary.csv"
mutantDetailsFile="${resultdir}/details.csv"
covMapFile="${resultdir}/covMap.csv"
diff --git a/scripts/trim_mutants.py b/scripts/trim_mutants.py
new file mode 100755
index 00000000..8d2b8459
--- /dev/null
+++ b/scripts/trim_mutants.py
@@ -0,0 +1,188 @@
+#!/usr/bin/env python3
+"""Create an exclude list for redundant mutants from a mutants.log file.
+
+This script reduces the number of mutants by identifying mutants to exclude,
+keeping only a limited number per method while preserving diverse mutation operators.
+The output is a list of mutant IDs to exclude that can be used with Major's
+exclude option.
+"""
+
+import argparse
+import sys
+from collections import defaultdict
+from pathlib import Path
+
+
+def parse_mutant_line(line):
+ """Parse a mutant line and extract key information.
+
+ Returns:
+ dict: Dictionary with 'id', 'operator', 'method', and 'line' keys, or None if parsing fails.
+ """
+ parts = line.strip().split(":")
+ if len(parts) < 7:
+ return None
+
+ mutant_id = parts[0]
+ operator = parts[1]
+
+ # Find the method identifier (format: CLASS@METHOD or just CLASS)
+ # It's the 5th field (index 4)
+ method_identifier = parts[4]
+
+ return {
+ "id": mutant_id,
+ "operator": operator,
+ "method": method_identifier,
+ "line": line.strip(),
+ }
+
+
+def group_mutants_by_method(mutants_file):
+ """Group mutants by their method identifier.
+
+ Returns:
+ dict: Dictionary mapping method identifiers to lists of mutant dictionaries.
+ """
+ method_mutants = defaultdict(list)
+
+ with Path(mutants_file).open("r") as f:
+ for line in f:
+ mutant = parse_mutant_line(line)
+ if mutant:
+ method_mutants[mutant["method"]].append(mutant)
+
+ return method_mutants
+
+
+def select_diverse_mutants(mutants, max_per_method=3):
+ """Select a limited number of mutants per method, preferring diversity.
+
+ Strategy:
+ 1. Group by mutation operator
+ 2. Select one mutant from each operator type until we hit the limit
+ 3. If we still have room, add more mutants round-robin style
+
+ Returns:
+ list: List of selected mutant dictionaries.
+ """
+ if len(mutants) <= max_per_method:
+ return mutants
+
+ # Group by operator
+ by_operator = defaultdict(list)
+ for mutant in mutants:
+ by_operator[mutant["operator"]].append(mutant)
+
+ selected = []
+ operators = list(by_operator.keys())
+
+ # First pass: select one from each operator type
+ for op in operators:
+ if len(selected) >= max_per_method:
+ break
+ selected.append(by_operator[op][0])
+
+ # If we still need more and have fewer operators than max_per_method,
+ # add more mutants round-robin
+ if len(selected) < max_per_method:
+ op_index = 0
+ while len(selected) < max_per_method:
+ op = operators[op_index % len(operators)]
+ # Find the next mutant from this operator that we haven't selected
+ for mutant in by_operator[op]:
+ if mutant not in selected:
+ selected.append(mutant)
+ break
+ op_index += 1
+ # Safety check to avoid infinite loop
+ if op_index > len(operators) * max_per_method:
+ break
+
+ return selected
+
+
+def trim_mutants(input_file, output_file, max_per_method=3, verbose=False):
+ """Create an exclude list for mutants to reduce redundancy.
+
+ Args:
+ input_file: Path to input mutants.log
+ output_file: Path to output exclude_mutants.txt
+ max_per_method: Maximum number of mutants to keep per method
+ verbose: Print statistics
+ """
+ # Group mutants by method
+ method_mutants = group_mutants_by_method(input_file)
+
+ if verbose:
+ total_original = sum(len(mutants) for mutants in method_mutants.values())
+ print(f"Original mutants: {total_original}")
+ print(f"Methods with mutants: {len(method_mutants)}")
+ print(f"Max mutants per method: {max_per_method}")
+
+ # Select mutants to keep
+ selected_mutants = []
+ all_mutants = []
+ for method, mutants in sorted(method_mutants.items()):
+ diverse_mutants = select_diverse_mutants(mutants, max_per_method)
+ selected_mutants.extend(diverse_mutants)
+ all_mutants.extend(mutants)
+
+ if verbose and len(mutants) > max_per_method:
+ print(f" {method}: {len(mutants)} -> {len(diverse_mutants)}")
+
+ # Determine which mutants to exclude (all mutants NOT selected)
+ selected_ids = {int(m["id"]) for m in selected_mutants}
+ all_ids = {int(m["id"]) for m in all_mutants}
+ excluded_ids = sorted(all_ids - selected_ids)
+
+ # Write excluded mutant IDs to file
+ with Path(output_file).open("w") as f:
+ f.writelines(f"{mutant_id}\n" for mutant_id in excluded_ids)
+
+ if verbose:
+ print(f"\nMutants to keep: {len(selected_mutants)}")
+ print(f"Mutants to exclude: {len(excluded_ids)}")
+ reduction = (len(excluded_ids) / total_original) * 100
+ print(f"Reduction: {reduction:.1f}%")
+ print(f"Exclude list written to: {output_file}")
+
+
+def main():
+ """Trim mutants from a mutants.log file."""
+ parser = argparse.ArgumentParser(
+ description="Create an exclude list for redundant mutants from a mutants.log file"
+ )
+ parser.add_argument("input_file", help="Input mutants.log file")
+ parser.add_argument(
+ "-o",
+ "--output",
+ help="Output file (default: exclude_mutants.txt in same directory)",
+ default=None,
+ )
+ parser.add_argument(
+ "-m",
+ "--max-per-method",
+ type=int,
+ default=3,
+ help="Maximum number of mutants to keep per method (default: 3)",
+ )
+ parser.add_argument("-v", "--verbose", action="store_true", help="Print detailed statistics")
+
+ args = parser.parse_args()
+
+ input_path = Path(args.input_file)
+ if not input_path.exists():
+ print(f"Error: Input file not found: {args.input_file}", file=sys.stderr)
+ sys.exit(1)
+
+ if args.output:
+ output_path = Path(args.output)
+ else:
+ output_path = input_path.parent / "exclude_mutants.txt"
+
+ trim_mutants(input_path, output_path, args.max_per_method, args.verbose)
+
+
+if __name__ == "__main__":
+ main()