muJava++ 1.5 : extended configurations in .properties file and improved memory usage for mutation score
Changes :
Fixes:
- fixed NullPointerException in PCI operator
- fixed NullPointerException in PNC operator
Modifications:
- mujava.app.Console has been deprecated, mujava.app.Main is used instead
- mujava++ no longer support the old console arguments, now uses only a .properties file
- mujava.app.Main arguments are:
- -p[roperties] : to give a specific .properties file to mujava++
- -o[perators] : prints all mutation operators information
- -h[elp] : prints mujava++ help
- added all new supported configurations into default.properties
- cleanned up some code
Additions:
- added support for several configurations to be defined in .properties files
- improved memory usage when running mutation score
IMPORTANT
For the best performance please use -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled as VM arguments and run muJava++ using java 8. A Java 8 VM improves memory usage since permGen is now a part of the heap, getting more allowed memory and can be garbage collected.
New configuration parameters
- mutation.advanced.prvo.enableSameLenght= [BOOLEAN] : Enable/disable mutations that changes one element of an expression without affecting it's length
- mutation.advanced.prvo.enableIncreaseLenght= [BOOLEAN] : Enable/disable mutations that changes an expression by adding a new element
- mutation.advanced.prvo.enableDecreaseLenght= [BOOLEAN] : Enable/disable mutations that removes an element from an expression
- mutation.advanced.prvo.enableOneByTwo= [BOOLEAN] : Enable/disable mutations that changes one field or method in a chained expression with a chained expression of size 2
- mutation.advanced.prvo.enableTwoByOne= [BOOLEAN] : Enable/disable mutations that changes a sub chained expression of size 2 with one field or method
- mutation.advanced.prvo.enableAllByOneLeft= [BOOLEAN] : Enable/disable mutations affecting a chained expression on the left side of an assignment statement replacing this expression with a variable or field
- mutation.advanced.prvo.enableAllByOneRight= [BOOLEAN] : Enable/disable mutations affecting a chained expression on the right side of an assignment statement replacing this expression with a variable, field or null
- mutation.advanced.prvo.enableSuper= [BOOLEAN] : Enable/disable the use of super in the generated mutations
- mutation.advanced.prvo.enableThis= [BOOLEAN] : Enable/disable the use of this in the generated mutations
- mutation.advanced.prvo.enableReplacementWithLiterals= [BOOLEAN] : Enable/disable the use of literals to replace expressions of size one
- mutation.advanced.prvo.enableNullLiteral= [BOOLEAN] : Enable/disable the use of the literal null in the generated mutations
- mutation.advanced.prvo.enableTrueLiteral= [BOOLEAN] : Enable/disable the use of the literal true in the generated mutations
- mutation.advanced.prvo.enableFalseLiteral= [BOOLEAN] : Enable/disable the use of the literal false in the generated mutations
- mutation.advanced.prvo.enableEmptyString= [BOOLEAN] : Enable/disable the use of the empty string literal in the generated mutations
- mutation.advanced.prvo.enableZeroLiteral= [BOOLEAN] : Enable/disable the use of the literal 0 in the generated mutations
- mutation.advanced.prvo.enableOneLiteral= [BOOLEAN] : Enable/disable the use of the literal 1 in the generated mutations
- mutation.advanced.prvo.enableStringLiterals= [BOOLEAN] : Enable/disable the use of the string literals (collected from the method to mutate code) in the generated mutations
- mutation.advanced.ror.replaceWithTrue=[BOOLEAN] : Enable/disable the replacement of boolean expressions with true
- mutation.advanced.ror.replaceWithFalse= [BOOLEAN] : Enable/disable the replacement of boolean expressions with false
- mutation.advanced.cor.andOperator= [BOOLEAN] : Enable/disable replacements with and operator
- mutation.advanced.cor.orOperator= [BOOLEAN] : Enable/disable replacements with or operator
- mutation.advanced.cor.xorOperator= [BOOLEAN] : Enable/disable replacements with xor operator
- mutation.advanced.cor.bitAndOperator= [BOOLEAN] : Enable/disable replacements with bit and operator
- mutation.advanced.cor.bitOrOperator= [BOOLEAN] : Enable/disable replacements with bit or operator