From d310ec3211254be00ed4bb9ff0d327137ec1b406 Mon Sep 17 00:00:00 2001 From: Varun Iyengar Date: Mon, 18 May 2026 17:27:38 -0700 Subject: [PATCH 1/4] Only run mutation analysis if needed (specify through -s flag), and trim mutants to better account for memory --- scripts/mutation-evosuite.sh | 55 ++-- scripts/mutation-randoop.sh | 64 +++-- .../ClassViewer-5.0.5b/build-evosuite.xml | 1 + .../ClassViewer-5.0.5b/build-randoop.xml | 1 + .../JSAP-2.1/build-evosuite.xml | 1 + .../program-config/JSAP-2.1/build-randoop.xml | 1 + .../a4j-1.0b/build-evosuite.xml | 1 + .../program-config/a4j-1.0b/build-randoop.xml | 1 + .../asm-5.0.1/build-evosuite.xml | 1 + .../asm-5.0.1/build-randoop.xml | 1 + .../bcel-5.2/build-evosuite.xml | 1 + .../program-config/bcel-5.2/build-randoop.xml | 1 + .../commons-cli-1.2/build-evosuite.xml | 263 +++++++++--------- .../commons-cli-1.2/build-randoop.xml | 1 + .../commons-codec-1.9/build-evosuite.xml | 1 + .../commons-codec-1.9/build-randoop.xml | 1 + .../build-evosuite.xml | 1 + .../build-randoop.xml | 1 + .../commons-compress-1.8/build-evosuite.xml | 1 + .../commons-compress-1.8/build-randoop.xml | 1 + .../commons-lang3-3.0/build-evosuite.xml | 1 + .../commons-lang3-3.0/build-randoop.xml | 1 + .../commons-math3-3.2/build-evosuite.xml | 1 + .../commons-math3-3.2/build-randoop.xml | 1 + .../commons-primitives-1.0/build-evosuite.xml | 1 + .../commons-primitives-1.0/build-randoop.xml | 1 + .../dcParseArgs-10.2008/build-evosuite.xml | 1 + .../dcParseArgs-10.2008/build-randoop.xml | 1 + .../easymock-3.2/build-evosuite.xml | 1 + .../easymock-3.2/build-randoop.xml | 1 + .../fixsuite-r48/build-evosuite.xml | 1 + .../fixsuite-r48/build-randoop.xml | 1 + .../guava-16.0.1/build-evosuite.xml | 1 + .../guava-16.0.1/build-randoop.xml | 1 + .../hamcrest-core-1.3/build-evosuite.xml | 1 + .../hamcrest-core-1.3/build-randoop.xml | 1 + .../javassist-3.19/build-evosuite.xml | 1 + .../javassist-3.19/build-randoop.xml | 1 + .../javax.mail-1.5.1/build-evosuite.xml | 1 + .../javax.mail-1.5.1/build-randoop.xml | 1 + .../jaxen-1.1.6/build-evosuite.xml | 1 + .../jaxen-1.1.6/build-randoop.xml | 1 + .../jcommander-1.35/build-evosuite.xml | 1 + .../jcommander-1.35/build-randoop.xml | 1 + .../jdom-1.0/build-evosuite.xml | 1 + .../program-config/jdom-1.0/build-randoop.xml | 1 + .../joda-time-2.3/build-evosuite.xml | 3 +- .../joda-time-2.3/build-randoop.xml | 5 +- .../program-config/jvc-1.1/build-evosuite.xml | 1 + .../program-config/jvc-1.1/build-randoop.xml | 1 + .../nekomud-r16/build-evosuite.xml | 1 + .../nekomud-r16/build-randoop.xml | 1 + .../pmd-core-5.2.2/build-evosuite.xml | 1 + .../pmd-core-5.2.2/build-randoop.xml | 1 + .../sat4j-core-2.3.5/build-evosuite.xml | 1 + .../sat4j-core-2.3.5/build-randoop.xml | 1 + .../shiro-core-1.2.3/build-evosuite.xml | 1 + .../shiro-core-1.2.3/build-randoop.xml | 1 + .../slf4j-api-1.7.12/build-evosuite.xml | 1 + .../slf4j-api-1.7.12/build-randoop.xml | 1 + .../tiny-sql-2.26/build-evosuite.xml | 1 + .../tiny-sql-2.26/build-randoop.xml | 1 + scripts/trim_mutants.py | 185 ++++++++++++ 63 files changed, 455 insertions(+), 177 deletions(-) create mode 100644 scripts/trim_mutants.py 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..b31a214b 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" @@ -94,7 +95,7 @@ - + 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..af858f8e 100644 --- a/scripts/program-config/joda-time-2.3/build-randoop.xml +++ b/scripts/program-config/joda-time-2.3/build-randoop.xml @@ -49,7 +49,7 @@ - + - + = 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 open(output_file, 'w') as f: + for mutant_id in excluded_ids: + f.write(f"{mutant_id}\n") + + 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(): + 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() From 3ecbe25f751ee1b300f8b0b6f49620166dc841c8 Mon Sep 17 00:00:00 2001 From: Varun Iyengar Date: Mon, 18 May 2026 17:31:54 -0700 Subject: [PATCH 2/4] Reformat python file --- scripts/trim_mutants.py | 93 +++++++++++++++++++---------------------- 1 file changed, 44 insertions(+), 49 deletions(-) diff --git a/scripts/trim_mutants.py b/scripts/trim_mutants.py index 7ff1244d..fe4e2907 100644 --- a/scripts/trim_mutants.py +++ b/scripts/trim_mutants.py @@ -16,42 +16,42 @@ def parse_mutant_line(line): """Parse a mutant line and extract key information.""" - parts = line.strip().split(':') + 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() + "id": mutant_id, + "operator": operator, + "method": method_identifier, + "line": line.strip(), } def group_mutants_by_method(mutants_file): """Group mutants by their method identifier.""" method_mutants = defaultdict(list) - - with open(mutants_file, 'r') as f: + + with open(mutants_file, "r") as f: for line in f: mutant = parse_mutant_line(line) if mutant: - method_mutants[mutant['method']].append(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 @@ -59,21 +59,21 @@ def select_diverse_mutants(mutants, max_per_method=3): """ 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) - + 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: @@ -89,14 +89,14 @@ def select_diverse_mutants(mutants, max_per_method=3): # 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 @@ -105,13 +105,13 @@ def trim_mutants(input_file, output_file, max_per_method=3, verbose=False): """ # 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 = [] @@ -119,20 +119,20 @@ def trim_mutants(input_file, output_file, max_per_method=3, verbose=False): 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} + 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 open(output_file, 'w') as f: + with open(output_file, "w") as f: for mutant_id in excluded_ids: f.write(f"{mutant_id}\n") - + if verbose: print(f"\nMutants to keep: {len(selected_mutants)}") print(f"Mutants to exclude: {len(excluded_ids)}") @@ -143,43 +143,38 @@ def trim_mutants(input_file, output_file, max_per_method=3, verbose=False): def main(): 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' + 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 + "-o", + "--output", + help="Output file (default: exclude_mutants.txt in same directory)", + default=None, ) parser.add_argument( - '-m', '--max-per-method', + "-m", + "--max-per-method", type=int, default=3, - help='Maximum number of mutants to keep per method (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' - ) - + 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__': +if __name__ == "__main__": main() From 662321c924164d1b4cb20ad07cc0b2be8d16edc2 Mon Sep 17 00:00:00 2001 From: Varun Iyengar Date: Mon, 18 May 2026 17:40:44 -0700 Subject: [PATCH 3/4] Continued to clean up trim_mutants.py --- scripts/trim_mutants.py | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) mode change 100644 => 100755 scripts/trim_mutants.py diff --git a/scripts/trim_mutants.py b/scripts/trim_mutants.py old mode 100644 new mode 100755 index fe4e2907..8d2b8459 --- a/scripts/trim_mutants.py +++ b/scripts/trim_mutants.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -""" -Create an exclude list for redundant mutants from a mutants.log file. +"""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. @@ -15,7 +14,11 @@ def parse_mutant_line(line): - """Parse a mutant line and extract key information.""" + """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 @@ -36,10 +39,14 @@ def parse_mutant_line(line): def group_mutants_by_method(mutants_file): - """Group mutants by their method identifier.""" + """Group mutants by their method identifier. + + Returns: + dict: Dictionary mapping method identifiers to lists of mutant dictionaries. + """ method_mutants = defaultdict(list) - with open(mutants_file, "r") as f: + with Path(mutants_file).open("r") as f: for line in f: mutant = parse_mutant_line(line) if mutant: @@ -49,13 +56,15 @@ def group_mutants_by_method(mutants_file): def select_diverse_mutants(mutants, max_per_method=3): - """ - Select a limited number of mutants per method, preferring diversity. + """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 @@ -94,8 +103,7 @@ def select_diverse_mutants(mutants, max_per_method=3): def trim_mutants(input_file, output_file, max_per_method=3, verbose=False): - """ - Create an exclude list for mutants to reduce redundancy. + """Create an exclude list for mutants to reduce redundancy. Args: input_file: Path to input mutants.log @@ -129,9 +137,8 @@ def trim_mutants(input_file, output_file, max_per_method=3, verbose=False): excluded_ids = sorted(all_ids - selected_ids) # Write excluded mutant IDs to file - with open(output_file, "w") as f: - for mutant_id in excluded_ids: - f.write(f"{mutant_id}\n") + 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)}") @@ -142,6 +149,7 @@ def trim_mutants(input_file, output_file, max_per_method=3, verbose=False): 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" ) From 0a0124cc07dd00016356e1682a7869f3dc23a40f Mon Sep 17 00:00:00 2001 From: Varun Iyengar Date: Mon, 18 May 2026 17:52:23 -0700 Subject: [PATCH 4/4] Fixed buggy build files --- scripts/program-config/joda-time-2.3/build-evosuite.xml | 2 +- scripts/program-config/joda-time-2.3/build-randoop.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) 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 b31a214b..2b401805 100644 --- a/scripts/program-config/joda-time-2.3/build-evosuite.xml +++ b/scripts/program-config/joda-time-2.3/build-evosuite.xml @@ -95,7 +95,7 @@ - + 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 af858f8e..b5460cf4 100644 --- a/scripts/program-config/joda-time-2.3/build-randoop.xml +++ b/scripts/program-config/joda-time-2.3/build-randoop.xml @@ -49,7 +49,7 @@ - + - +