2.6 KiB
2.6 KiB
Mutation-CRAP
Experimental metric mutation-crap version 1, status policy timeouts-killed-v1: C² × (1 − MS)³ + C with C the JaCoCo complexity and MS the share of killed mutants, as the policy counts them.
No threshold is proven; a score is no proof of correctness.
- Analysis:
:pitest - Tools: werkcrappit 0.26.10, PIT 1.30.0, JaCoCo 0.8.15
- Scope: 3 classes selected by PIT, all read
Summary
| State | Methods |
|---|---|
| SCORED | 2 |
| NO_MUTATION_RESULTS | 1 |
| NO_ELIGIBLE_MUTANTS | 1 |
| INCONCLUSIVE | 1 |
| COMPLEXITY_UNAVAILABLE | 1 |
| EXCLUDED | 1 |
Scored Methods
Highest score first.
| Mutation-CRAP | Complexity | Mutation score | Killed / eligible | Method |
|---|---|---|---|---|
| 22.5 | 10 | 0.50 | 5 / 10 | demo.Classifier.classify(I)Ljava/lang/String; |
| 1 | 1 | 1.00 | 1 / 1 | demo.Classifier.normalize(I)I |
Methods Without Score
These are not rated well or badly; they have no score, for the reasons given.
| State | Method | Complexity | Mutants | Reasons |
|---|---|---|---|---|
| NO_ELIGIBLE_MUTANTS | demo.Classifier.compare(II)I |
2 | NON_VIABLE 2 | no-eligible-mutants |
| NO_MUTATION_RESULTS | demo.Classifier.describe()Ljava/lang/String; |
2 | none | no-mutation-results |
| INCONCLUSIVE | demo.Classifier.retry(I)I |
3 | KILLED 2, RUN_ERROR 1 | inconclusive-status:RUN_ERROR |
| EXCLUDED | demo.Grade.values()[Ldemo/Grade; |
— | none | jacoco-filtered:other |
| COMPLEXITY_UNAVAILABLE | demo.Legacy.run()V |
— | SURVIVED 1 | complexity-unavailable, method-not-in-inventory |
Cohesion and Coupling
LCOM4 counts groups of methods that neither call each other nor share a field; above 1, a class could be split. Ce counts the other classes of the analysed code a class depends on, Ca those depending on it.
| LCOM4 | Class | Method groups |
|---|---|---|
| 2 | demo.Classifier |
classify, normalize, retry · compare, describe |
| Ce | Ca | Class |
|---|---|---|
| 1 | 0 | demo.Classifier |
| 0 | 1 | demo.Grade |
Change Risk
Mutation-CRAP over the whole class, its scored methods summed, times (1 + (LCOM4 - 1) / 2) times (1 + Ce / 20). A class with an unclear method or without a scored one has no change risk.
| Change risk | Complexity | Mutation score | Killed / eligible | LCOM4 | Ce | Class |
|---|
Exclusion Rules
- PIT
excludedMethods: none - werkcrappit
excludeClasses: none - werkcrappit
excludeMethods: none - Methods JaCoCo filters as compiler-generated are excluded with the reason
jacoco-filtered:….