The Major Mutation Framework
Easy and scalable mutation analysis for Java!
(version 2.1.0)
Latest version of the Major mutation framework
May 8, 2024
Download Major v2.1.0
Changelog
Major v2.1.0
Mutator
- Added logging of character offset (in addition to line number) for each mutant.
- Fixed incorrect log lines for "COR" mutants that mutated identifiers to TRUE or FALSE.
Major v2.0.0
Mutator
- Migrated mutator to being a (Java-8) javac plugin.
- Support automated AST refactoring to address code-too-large errors when mutating large methods or declarations.
- Fine-grained logging of mutant generation and mutant context.
- Various bug fixes and improvements to mutation operators.
Mutation analyzer
- Allow individual preprocessing and analysis runs.
- Persist preprocessing results (coverage information) for reuse.
- Support inclusion/exclusion of individual mutants and/or tests.
Major v1.3.5
Mutator
- Fix for type casts: propagate type information such that the type of the type cast expression matches the type of the mutated expression.
Major v1.3.4
Mutator
- Export more fine-grained AST context information for mutants.
Mutation analyzer
- Smaller memory footprint for the Ant-based analyzer.
- Properly label mutants that time out to avoid rerunning them again.
Major v1.3.3
Mutator
- Don't apply the EVR mutation operator to null expressions.
Mutation analyzer
- Added a new command-line analyzer (beta version).
Major v1.3.2
Mutator
- Export of AST context information: for each generated mutant, what is its parent context, data type context, and children context.
Mutation analyzer
- Smaller documentation improvements.
Major v1.3.1
Mutator
- Fix for the EVR mutation operator: EVR can't be applied to a return statement of a method whose return type is void.
Mutation analyzer
- Major's kill matrix now provides the kill reason (assertion, exception, timeout) for each mutant-test execution.
- Added a new configuration option (timeoutOffset) to define a minimal test timeout regardless of the runtime of that test on the original version of the code.
Major v1.3.0
Major's DSL (MML)
- Support for targeting a set of overloaded methods (by name) or a particular method (by signature).
- Support for enabling/disabling the LVR mutation operator for specific types of literals (numerical, boolean, and String literals).
- Support for enabling/disabling the STD mutation operator for specific types of statements (method call, assignment, increment, decrement, break, continue, return)
Mutator
- Fix for the COR mutation operator: ternary operators, whose conditions have no logical connectors, are now properly mutated. For example, isFlag() in int a = isFlag() ? 1 : -1 is replaced by true and false.
- New EVR (Expression Value Replacement) operator: replaces an expression (in an otherwise unmutated statement) with a default value.
Mutation analyzer
- Support for Java 8.
- Support for parameterized unit tests, when running test methods in isolation (i.e., sort="sort_method").