Base Plugin
1.3.1
Enhancement: Additional Reactive Mutators
New operators to swap calls to flatMap, switchMap and concatMap.
1.3.0
Relocate Maven Co-ordinates
This release moves the plugin to com.arcmutate:base
. Previous releases were published as com.groupcdg.arcmutate:base
.
1.2.2
Bug Fix: NumberFormatException on Kotlin Method Reference
In some situations the code to improve the descriptions of mutations to Java lambdas threw an error when presented with proxy code generated by the Kotlin compiler for method references.
1.2.1
Enhancement: Faster Incremental Analysis
When running incremental analysis in the default mode (i.e. with run_test implicitly set to true) only new and modified tests will now be used to challenge previously surviving mutants.
Previously, the analyser under performed the built in pitest analyser in some circumstances when running in default mode. It will now always provide equal or better performance.
1.2.0
Enhancement: Improved Incremental Analysis
Activating the +arcmutate_history
feature will cause pitest to use an improved incremental analyser when working with history files.
This release requires pitest 1.15.0 or above.
Note that history files produced with pitest’s built in incremental analyser are not compatible with arcmutate analyser.
1.1.3
Enhancement: Improved Support For RXJava 3
REMOVE_DISTINCT
, REMOVE_FILTER
, REMOVE_SKIP
and REMOVE_SORTED
will now also mutate subtypes of
- io.reactivex.rxjava3.core.Maybe
- io.reactivex.rxjava3.core.Observable
- io.reactivex.rxjava3.core.Flowable
Previously code using common subtypes such as Subject
was not mutated.
Enhancement: Support For RXJava 2
REMOVE_DISTINCT
, REMOVE_FILTER
, REMOVE_SKIP
and REMOVE_SORTED
updated to support the following types from RXJava 2.
- io.reactivex.Maybe
- io.reactivex.Observable
- io.reactivex.Flowable
Supported calls on subtypes of these classes will also be mutated.
Bug Fix: Filter Junk One Less Param Mutations
The ONE_LESS_PARAM
mutator created zero argument calls for some methods where a zero parameter overload did not exist. These mutations would always be killed due to a runtime error.
These mutants are now correctly identified and filtered.
1.1.2
Bug Fix: Licence Not Resolved
Licence file not correctly resolved for some gradle builds.
1.1.1
Enhancement: Further Expand Licence Search
1.1.0
Enhancement: Extreme Mutation Operators
1.0.5
Bug Fix: Swap Mutator Not Properly Isolated
In some circumstances the SWAP_PARAMS mutator interfered with the analysis of other mutants, resulting in false positives (mutation incorrectly killed).
1.0.4
Enhancement: Filter Uncovered Mutants
Mutants without coverage can now be excluded from the report by activating the feature +nouncovered
.
As uncovered mutants have a very low processing cost, filtering them does not greatly reduce analysis times. It may be desirable to exclude them when using git integration in mixed or test only mode.
1.0.3
Enhancement: Expand Licence Search
If the plugin is not supplied with the project base dir and dynamic licensing is not being used, it must search backwards for a licence file. This release expands the scope of that search.
1.0.2
Bug Fix: IndexOutOfBoundsException When Using Parameter Swap Mutator
Some users observed IndexOutOfBoundsExceptions when using the SWAP_PARAMS mutator on Kotlin codebases.
This was traced to an issue in how type signatures were parsed when filtering out junk instances of this mutation.
1.0.1
New Feature: Improved Descriptions Lambda Mutations
The base plugin now updates the descriptions of mutants within lambdas and other compiler constructs to be more human readable.
For example for
boolean foo(List<String> list) {
return list.stream()
.filter(s -> s.startsWith("dog"))
.findAny()
.isPresent();
}
Pitest will produce a mutant with a description like
replaced boolean return with true for com/example/SomeClass::lambda$foo$1
This will be converted to
replaced boolean return with true for 1st lambda in foo
Note, this feature was previously available only for Arcmutate Pro subscribers, but has now been included in the base plugin.
1.0.0
Enhancement: Improved Filtering of Equivalent Reactive Returns Mutants
Improvements to filtering of equivalent mutants in methods with reactive return types such as reactor.core.publisher.Flux
and io.reactivex.rxjava3.core.Maybe
.