The Major Mutation Framework
Easy and scalable mutation analysis for Java!
(version 3.0.1)
Latest version of the Major mutation framework
September 10, 2024
Download Major v3.0.1
Changelog
Download Major v3.0.1
Mutator
- Fix NPE when creating value ranges in EMS that involve infinity.
Download Major v3.0.0
Mutator
- Java 11 support.
- Advanced equivalent-mutant suppression (EMS).
Major v2.2.0
Mutator
- Shading of plugin dependencies to avoid compatibility issues.
- Separation of major.jar (mutator plugin) and major-rt.jar (runtime configuration).
- Prevent a runtime exception for statement-deletion mutants in dead code.
Mutation analyzer
- All Ant dependencies now live in lib/ant to avoid polluting the mutation analyzer's classpath with mutator classes.
Documentation
- Added missing images (doc/img) to properly render doc/major.html.
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").