Skip to content

muJava++ 1.5 : extended configurations in .properties file and improved memory usage for mutation score

Choose a tag to compare

@saiema saiema released this 09 Sep 22:34
· 219 commits to master since this release

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