diff options
| author | bloodstalker <thabogre@gmail.com> | 2017-03-16 21:44:11 +0000 | 
|---|---|---|
| committer | bloodstalker <thabogre@gmail.com> | 2017-03-16 21:44:11 +0000 | 
| commit | e66090bab8e9cb19b86d27d67cd9d7ba6e578fa6 (patch) | |
| tree | e7685300bf5bc3a8f9702596a33d873e991fdb7b | |
| parent | added a new inclusion directive for the new report files (diff) | |
| download | mutator-e66090bab8e9cb19b86d27d67cd9d7ba6e578fa6.tar.gz mutator-e66090bab8e9cb19b86d27d67cd9d7ba6e578fa6.zip | |
not much, just changed tabs to spaces
| -rwxr-xr-x | mutator.sh | 394 | 
1 files changed, 197 insertions, 197 deletions
| @@ -15,217 +15,217 @@ PRINT_PRETTY=false  while [[ $# -gt 0 ]]  do -	passarg="$1" -	case $passarg in -		-c|--command) -		COMMAND="$2" -		shift -		;; -		-h|--help|-help) -		echo "-h, 	--help prints out the help.Obviously..." -		echo "-f,	--file tells mutator to run the commands from the file." -		echo "-c, 	--command you can specify the command you want to pass to mutator." -		echo "			clean runs make clean." -		echo "			build-all runs make all." -		echo "			run runs the mutator executable on the target." -		echo "			default runs build-all and then run." -		echo "			format calls clang-format to format the mutant. later to be used for the test command." -		echo "			test runs the tests on the executables and checks the results." -		echo "			misrac checks for misrac rules" -		echo "			auto-refac runs the automatic-refactoring on the inputs. auto-refac will run " -		echo "-v, 	--version prints out the version." -		echo "-i, 	--input, -input lets you choose the input file(or white-space-separated list of files) that is going to be passed to the mutator executable(s)." -		echo "-o, 	--output, -output lets you choose where to put the mutant." -		echo "-pp,	--print-pretty, prints the output in a pretty format in a new file. The new file has the same name with a \"-pretty\" added to the name in the same directory." -		echo "-t,	--test, runs the tests on the built executables. It should be followed by an executable name and the test to run on it. The accepted options are: tdd,valgrind,xsd,precommit." -		echo "	For example: ./mutator.sh --test mutator-lvl0 valgrind" -		echo "-opts 	--options, pass options to the executable(s). The executables support all the clang options. Please enclose all the options in double quatation." -		echo "	For example: -opts \"-Wall std=c89\"" -		echo "-copts 	--customoptions, same as opts, but only used for custom options defined for the executable. For example: -copts \"-SysHeader=false -MainOnly=true\"" -		echo "" -		echo "For a list of available options for each executable run them with -help to see a list." -		exit 0 -		;; -		-pp|--print-pretty) -		PRINT_PRETTY=true -		;; -		-t|--test) -		if [[ "$2" == mutator-lvl0 && "$3" == valgrind ]]; then -			echo "Running command:" -			echo "valgrind ./"$2" -SysHeader=false -MainOnly=true  ./test/testFuncs1.c ./test/testFuncs2.c ./test/testFuncs3.c -- -std=c90 -I/lib/gcc/x86_64-redhat-linux/6.3.1/include > ./test/misra-log" -			"valgrind" ./"$2" -SysHeader=false -MainOnly=true  ./test/testFuncs1.c ./test/testFuncs2.c ./test/testFuncs3.c -- -std=c90 -I/lib/gcc/x86_64-redhat-linux/6.3.1/include > ./test/misra-log -		elif [[ "$2" == mutator-lvl0 && "$3" == tdd ]]; then -			echo "Running command:" -			echo "./mutator-lvl0 -SysHeader=false -MainOnly=true  ./test/testFuncs1.c ./test/testFuncs2.c ./test/testFuncs3.c -- -std=c90 -I/lib/gcc/x86_64-redhat-linux/6.3.1/include > ./test/misra-log" -			"./mutator-lvl0" -SysHeader=false -MainOnly=true  ./test/testFuncs1.c ./test/testFuncs2.c ./test/testFuncs3.c -- -std=c90 -I/lib/gcc/x86_64-redhat-linux/6.3.1/include > ./test/misra-log -		elif [[ "$2" == mutator-lvl0 && "$3" == xsd ]]; then -			echo "xmllint --noout --schema ./samples/mutator0-report-schema.xsd ./test/misrareport.xml" -			"xmllint" --noout --schema ./samples/mutator0-report-schema.xsd ./test/misrareport.xml +  passarg="$1" +  case $passarg in +    -c|--command) +    COMMAND="$2" +    shift +    ;; +    -h|--help|-help) +    echo "-h,   --help prints out the help.Obviously..." +    echo "-f, --file tells mutator to run the commands from the file." +    echo "-c,   --command you can specify the command you want to pass to mutator." +    echo "      clean runs make clean." +    echo "      build-all runs make all." +    echo "      run runs the mutator executable on the target." +    echo "      default runs build-all and then run." +    echo "      format calls clang-format to format the mutant. later to be used for the test command." +    echo "      test runs the tests on the executables and checks the results." +    echo "      misrac checks for misrac rules" +    echo "      auto-refac runs the automatic-refactoring on the inputs. auto-refac will run " +    echo "-v,   --version prints out the version." +    echo "-i,   --input, -input lets you choose the input file(or white-space-separated list of files) that is going to be passed to the mutator executable(s)." +    echo "-o,   --output, -output lets you choose where to put the mutant." +    echo "-pp,  --print-pretty, prints the output in a pretty format in a new file. The new file has the same name with a \"-pretty\" added to the name in the same directory." +    echo "-t, --test, runs the tests on the built executables. It should be followed by an executable name and the test to run on it. The accepted options are: tdd,valgrind,xsd,precommit." +    echo "  For example: ./mutator.sh --test mutator-lvl0 valgrind" +    echo "-opts   --options, pass options to the executable(s). The executables support all the clang options. Please enclose all the options in double quatation." +    echo "  For example: -opts \"-Wall std=c89\"" +    echo "-copts  --customoptions, same as opts, but only used for custom options defined for the executable. For example: -copts \"-SysHeader=false -MainOnly=true\"" +    echo "" +    echo "For a list of available options for each executable run them with -help to see a list." +    exit 0 +    ;; +    -pp|--print-pretty) +    PRINT_PRETTY=true +    ;; +    -t|--test) +    if [[ "$2" == mutator-lvl0 && "$3" == valgrind ]]; then +      echo "Running command:" +      echo "valgrind ./"$2" -SysHeader=false -MainOnly=true  ./test/testFuncs1.c ./test/testFuncs2.c ./test/testFuncs3.c -- -std=c90 -I/lib/gcc/x86_64-redhat-linux/6.3.1/include > ./test/misra-log" +      "valgrind" ./"$2" -SysHeader=false -MainOnly=true  ./test/testFuncs1.c ./test/testFuncs2.c ./test/testFuncs3.c -- -std=c90 -I/lib/gcc/x86_64-redhat-linux/6.3.1/include > ./test/misra-log +    elif [[ "$2" == mutator-lvl0 && "$3" == tdd ]]; then +      echo "Running command:" +      echo "./mutator-lvl0 -SysHeader=false -MainOnly=true  ./test/testFuncs1.c ./test/testFuncs2.c ./test/testFuncs3.c -- -std=c90 -I/lib/gcc/x86_64-redhat-linux/6.3.1/include > ./test/misra-log" +      "./mutator-lvl0" -SysHeader=false -MainOnly=true  ./test/testFuncs1.c ./test/testFuncs2.c ./test/testFuncs3.c -- -std=c90 -I/lib/gcc/x86_64-redhat-linux/6.3.1/include > ./test/misra-log +    elif [[ "$2" == mutator-lvl0 && "$3" == xsd ]]; then +      echo "xmllint --noout --schema ./samples/mutator0-report-schema.xsd ./test/misrareport.xml" +      "xmllint" --noout --schema ./samples/mutator0-report-schema.xsd ./test/misrareport.xml      elif [[ "$2" == precommit ]]; then        cd ./extra-tools        "./precommitTests.sh" -		else -			echo "unknown combination of options: $2 and $3" -			exit 127 -		fi -		exit 0 -		;; -		-f|--file) -		INPUT_FILE="$2" -		while read -r line -		do -			case $line in  -				action_name:*) -				F_ACTION_NAME=${line:12:$((${#line}))} -				;; -				executable_name:*) -				F_EXEC_NAME=${line:16:$((${#line}))} -				;; -				exec_opts:*) -				F_EXEC_COPTS=${line:10:$((${#line}))} -				;; -				in_files:*) -				F_IN_FILES=${line:9:$((${#line}))} -				;; -				libtooling_options:*) -				F_LIBTOOLING_OPTS=${line:19:$((${#line}))} -				;; -				out_files:*) -				F_OUT_FILE=${line:10:$((${#line}))} -				;; -				log_files:*) -				F_LOG_FILE=${line:10:$((${#line}))} -				;; -				\#*) -				#ignore.its a comment. -				;; -				print_pretty:*) -				F_PRINT_PRETTY=${line:13:$((${#line}))} -				;; -				end_action:*) -				F_END_ACTION=${line:11:$((${#line}))} -				if [[ "$F_END_ACTION" == run ]]; then -					echo "running $F_ACTION_NAME ..." -					echo "running ./$F_EXEC_NAME $F_EXEC_COPTS $F_IN_FILES -- $F_LIBTOOLING_OPTS > $F_OUT_FILE for $F_ACTION_NAME" +    else +      echo "unknown combination of options: $2 and $3" +      exit 127 +    fi +    exit 0 +    ;; +    -f|--file) +    INPUT_FILE="$2" +    while read -r line +    do +      case $line in  +        action_name:*) +        F_ACTION_NAME=${line:12:$((${#line}))} +        ;; +        executable_name:*) +        F_EXEC_NAME=${line:16:$((${#line}))} +        ;; +        exec_opts:*) +        F_EXEC_COPTS=${line:10:$((${#line}))} +        ;; +        in_files:*) +        F_IN_FILES=${line:9:$((${#line}))} +        ;; +        libtooling_options:*) +        F_LIBTOOLING_OPTS=${line:19:$((${#line}))} +        ;; +        out_files:*) +        F_OUT_FILE=${line:10:$((${#line}))} +        ;; +        log_files:*) +        F_LOG_FILE=${line:10:$((${#line}))} +        ;; +        \#*) +        #ignore.its a comment. +        ;; +        print_pretty:*) +        F_PRINT_PRETTY=${line:13:$((${#line}))} +        ;; +        end_action:*) +        F_END_ACTION=${line:11:$((${#line}))} +        if [[ "$F_END_ACTION" == run ]]; then +          echo "running $F_ACTION_NAME ..." +          echo "running ./$F_EXEC_NAME $F_EXEC_COPTS $F_IN_FILES -- $F_LIBTOOLING_OPTS > $F_OUT_FILE for $F_ACTION_NAME"            eval "./"$F_EXEC_NAME $F_EXEC_COPTS $F_IN_FILES -- $F_LIBTOOLING_OPTS > $F_OUT_FILE -					if [[ "$F_PRINT_PRETTY" = true ]]; then -						echo "running pretty print..." -						source ./extra-tools/ReportPrintPretty.sh $F_OUT_FILE $F_OUT_FILE-pretty -					fi -				elif [[ "$F_END_ACTION" == stop ]]; then -					#skip running ths action -					echo "skipping $F_ACTION_NAME ..." -				else -					echo "unknown option $F_END_ACTION for end_action. currently the only acceptable options are \"run\" and \"stop\"." -				fi -				;; -			esac -		done < "$INPUT_FILE" -		exit 0 -		shift -		;; -		-v|--version) -		echo "mutator-lvl0 1.0.0 Pre-release" -		echo "mutator 1.0.0. Demo" -		exit 0 -		;; -		-i|--input|-input) -		while [[ ! "$2" == -* ]] && [[ $# -gt 0 ]]; do -			INPUT="$INPUT"" ""$2" -			shift -		done -		;; -		-opts|--options) -		OPTIONS="$2" -		shift -		;; -		-copts|--customoptions) -		COPTIONS="$2" -		shift -		;; -		-o|--output|-output) -		OUTPUT="$2" -		shift -		;; -		*) -		#not a valid argument -		echo  "$1 is not a valid argument..." -		exit 127 -		;; -	esac -	shift +          if [[ "$F_PRINT_PRETTY" = true ]]; then +            echo "running pretty print..." +            source ./extra-tools/ReportPrintPretty.sh $F_OUT_FILE $F_OUT_FILE-pretty +          fi +        elif [[ "$F_END_ACTION" == stop ]]; then +          #skip running ths action +          echo "skipping $F_ACTION_NAME ..." +        else +          echo "unknown option $F_END_ACTION for end_action. currently the only acceptable options are \"run\" and \"stop\"." +        fi +        ;; +      esac +    done < "$INPUT_FILE" +    exit 0 +    shift +    ;; +    -v|--version) +    echo "mutator-lvl0 1.0.0 Pre-release" +    echo "mutator 1.0.0. Demo" +    exit 0 +    ;; +    -i|--input|-input) +    while [[ ! "$2" == -* ]] && [[ $# -gt 0 ]]; do +      INPUT="$INPUT"" ""$2" +      shift +    done +    ;; +    -opts|--options) +    OPTIONS="$2" +    shift +    ;; +    -copts|--customoptions) +    COPTIONS="$2" +    shift +    ;; +    -o|--output|-output) +    OUTPUT="$2" +    shift +    ;; +    *) +    #not a valid argument +    echo  "$1 is not a valid argument..." +    exit 127 +    ;; +  esac +  shift  done  if [[ "$COMMAND" == "clean" ]]; then -	echo "Running make clean..." -	echo "Killing all mutants..." -	"make" clean -	rm ./test/"$OUTPUT" -	rm ./test/misra-log -	rm ./test/medium.c -	rm ./test/mutant_format.c -	rm ./test/mutant-lvl1.c -	rm ./extra-tools/dump +  echo "Running make clean..." +  echo "Killing all mutants..." +  "make" clean +  rm ./test/"$OUTPUT" +  rm ./test/misra-log +  rm ./test/medium.c +  rm ./test/mutant_format.c +  rm ./test/mutant-lvl1.c +  rm ./extra-tools/dump  elif [[ "$COMMAND" == "format" ]]; then -	echo 'using clang-format to format the mutant...' -	"/home/bloodstalker/llvm-clang/build/bin/clang-format"	$OUTPUT > $OUTPUT_FORMAT +  echo 'using clang-format to format the mutant...' +  "/home/bloodstalker/llvm-clang/build/bin/clang-format"  $OUTPUT > $OUTPUT_FORMAT  elif [[ "$COMMAND" == "test" ]]; then -	echo "you haven't implemented it yet..." +  echo "you haven't implemented it yet..."  elif [[ "$COMMAND" == "build-all" ]]; then -	echo "Building all executables..." -	"make" all +  echo "Building all executables..." +  "make" all  elif [[ "$COMMAND" == "run" ]];then -	echo "Running executables on target file..." -	"./mutator-lvl1" $INPUT -- > mutant-lvl1.c -	"./mutator-lvl2" mutant-lvl1.c -- > $OUTPUT +  echo "Running executables on target file..." +  "./mutator-lvl1" $INPUT -- > mutant-lvl1.c +  "./mutator-lvl2" mutant-lvl1.c -- > $OUTPUT  elif [[ "$COMMAND" == "misrac" ]]; then -	echo "Removing previous XML report..." -	"rm" ./test/misrareport.xml -	echo "Removing previous JSON report..." -	"rm" ./test/misrareport.json -	echo "checking input file(s) against Misra-C 2004..." -	echo "Command to run:" -	echo "./mutator-lvl0 ${COPTIONS:0:$((${#COPTIONS}))} $INPUT -- ${OPTIONS:0:$((${#OPTIONS}))} > ./test/misra-log" -	"./mutator-lvl0" ${COPTIONS:0:$((${#COPTIONS}))} $INPUT -- ${OPTIONS:0:$((${#OPTIONS}))} > ./test/misra-log -	if [[ "$PRINT_PRETTY" = true ]]; then -		echo "running pretty print..." -		source ./extra-tools/ReportPrintPretty.sh ./test/misra-log ./test/misra-log-pretty -	fi +  echo "Removing previous XML report..." +  "rm" ./test/misrareport.xml +  echo "Removing previous JSON report..." +  "rm" ./test/misrareport.json +  echo "checking input file(s) against Misra-C 2004..." +  echo "Command to run:" +  echo "./mutator-lvl0 ${COPTIONS:0:$((${#COPTIONS}))} $INPUT -- ${OPTIONS:0:$((${#OPTIONS}))} > ./test/misra-log" +  "./mutator-lvl0" ${COPTIONS:0:$((${#COPTIONS}))} $INPUT -- ${OPTIONS:0:$((${#OPTIONS}))} > ./test/misra-log +  if [[ "$PRINT_PRETTY" = true ]]; then +    echo "running pretty print..." +    source ./extra-tools/ReportPrintPretty.sh ./test/misra-log ./test/misra-log-pretty +  fi  elif [[ "$COMMAND" == "default" ]]; then -	echo "This option is deprecated..." -	exit 0 -	echo "Building all target executables..." -	"make" all CXX=clang++ BUILD_MODE=COV_NO_CLANG_1Z -	echo "Ruunning the input through clang-format..." -	"clang-format"	$INPUT -- > ./test/$OUTPUT_FORMAT -	"cp" ./test/$OUTPUT_FORMAT ./test/medium.c -	echo "Running all exetubales on target input..." -	echo "Level 1..." -	"./mutator-lvl1" ./test/medium.c -- > ./test/mutant-lvl1.c -	echo "Level 2..." -	"./mutator-lvl2" ./test/mutant-lvl1.c -- > ./test/$OUTPUT -	echo "Using clang-format to format the mutant..." -	"clang-format"	./test/$OUTPUT -- > ./test/$OUTPUT_FORMAT +  echo "This option is deprecated..." +  exit 0 +  echo "Building all target executables..." +  "make" all CXX=clang++ BUILD_MODE=COV_NO_CLANG_1Z +  echo "Ruunning the input through clang-format..." +  "clang-format"  $INPUT -- > ./test/$OUTPUT_FORMAT +  "cp" ./test/$OUTPUT_FORMAT ./test/medium.c +  echo "Running all exetubales on target input..." +  echo "Level 1..." +  "./mutator-lvl1" ./test/medium.c -- > ./test/mutant-lvl1.c +  echo "Level 2..." +  "./mutator-lvl2" ./test/mutant-lvl1.c -- > ./test/$OUTPUT +  echo "Using clang-format to format the mutant..." +  "clang-format"  ./test/$OUTPUT -- > ./test/$OUTPUT_FORMAT  elif [[ "$COMMAND" == "auto-refac" ]]; then -	echo "Warning! This option is not yet completely implemented." -	echo "Copying input file(s) to temp..." -	CP_INPUT_ARR=$(echo "$INPUT" | awk 'BEGIN{RS=" "}{print $1}') -	echo $CP_INPUT_ARR -	"cp" $CP_INPUT_ARR ./temp -	echo "Running clang-format on the copies of input(s)..." -	RUN_INPUT_ARR=$(ls ./temp | gawk 'BEGIN{RS="\n"}{print $1}') -	for loopinput in ${RUN_INPUT_ARR[@]}; do -		echo mut1-$loopinput -		echo "Running automatic-refactoring on input mut1-$loopinput..." -		"./mutator-lvl1" ./temp/$loopinput -- -w > ./temp/mut1-$loopinput -		"clang-format" -i $loopinput -		"./mutator-lvl2" ./temp/mut1-$loopinput -- -w > ./temp/mut2-$loopinput -		"clang-format" -i ./temp/mut2-$loopinput -	done +  echo "Warning! This option is not yet completely implemented." +  echo "Copying input file(s) to temp..." +  CP_INPUT_ARR=$(echo "$INPUT" | awk 'BEGIN{RS=" "}{print $1}') +  echo $CP_INPUT_ARR +  "cp" $CP_INPUT_ARR ./temp +  echo "Running clang-format on the copies of input(s)..." +  RUN_INPUT_ARR=$(ls ./temp | gawk 'BEGIN{RS="\n"}{print $1}') +  for loopinput in ${RUN_INPUT_ARR[@]}; do +    echo mut1-$loopinput +    echo "Running automatic-refactoring on input mut1-$loopinput..." +    "./mutator-lvl1" ./temp/$loopinput -- -w > ./temp/mut1-$loopinput +    "clang-format" -i $loopinput +    "./mutator-lvl2" ./temp/mut1-$loopinput -- -w > ./temp/mut2-$loopinput +    "clang-format" -i ./temp/mut2-$loopinput +  done  elif [[ "$COMMAND" == "jack" ]]; then -	echo +  echo  else  -	echo "$COMMAND is not a valid command..." -	echo "Use --help for a list of valid commands..." -	exit 1 +  echo "$COMMAND is not a valid command..." +  echo "Use --help for a list of valid commands..." +  exit 1  fi | 
