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()