security-core
PIT mutation report for security-core, rendered from the module’s
mutations.xml. See Architecture → Quality
for the cross-module comparison and all modules.
87%
mutation coverage
91%
test strength
1893/2196
mutations killed
195
survived
100
no coverage
Mutators
Kill rate per mutation operator — where the test suite is strong and where mutants slip through.
| Mutator | Killed | Total | Kill rate |
|---|---|---|---|
NegateConditionals | 677 | 728 | |
NullReturnVals | 391 | 446 | |
VoidMethodCall | 313 | 413 | |
EmptyObjectReturnVals | 169 | 207 | |
BooleanTrueReturnVals | 122 | 129 | |
BooleanFalseReturnVals | 79 | 83 | |
ConditionalsBoundary | 48 | 72 | |
PrimitiveReturns | 48 | 61 | |
Math | 36 | 45 | |
Increments | 10 | 12 |
Surviving mutants 295
Each row is a real gap: a bytecode change the tests
did not catch. Class · line · operator. Showing the first 60 of
295 — run mvnw -pl :security-core org.pitest:pitest-maven:mutationCoverage
for the full interactive PIT report.
| Class | Line | Mutator | Mutation |
|---|---|---|---|
AbusePatternMonitor | 162 | EmptyObjectReturnVals | replaced return value with Collections.emptyList for com/svenruppert/vaadin/security/credential/abuse/AbusePatternMonitor::observe |
AbusePatternMonitor | 193 | EmptyObjectReturnVals | replaced return value with Optional.empty for com/svenruppert/vaadin/security/credential/abuse/AbusePatternMonitor::observeSpraying |
AbusePatternMonitor | 209 | VoidMethodCall | removed call to com/svenruppert/vaadin/security/credential/abuse/AbusePatternMonitor::pruneByTime |
AbusePatternMonitor | 225 | EmptyObjectReturnVals | replaced return value with Optional.empty for com/svenruppert/vaadin/security/credential/abuse/AbusePatternMonitor::observeStuffing |
AbusePatternMonitor | 240 | VoidMethodCall | removed call to com/svenruppert/vaadin/security/credential/abuse/AbusePatternMonitor::pruneInstantDeque |
AbusePatternMonitor | 243 | NegateConditionals | negated conditional |
AbusePatternMonitor | 251 | EmptyObjectReturnVals | replaced return value with Optional.empty for com/svenruppert/vaadin/security/credential/abuse/AbusePatternMonitor::observeResetAbuse |
AbusePatternMonitor | 281 | PrimitiveReturns | replaced int return with 0 for com/svenruppert/vaadin/security/credential/abuse/AbusePatternMonitor::distinctTargets (no coverage) |
ActionAuthorizationService | 57 | NegateConditionals | negated conditional (no coverage) |
ActionAuthorizationService | 59 | NegateConditionals | negated conditional (no coverage) |
ApiKeyAuthenticationService | 99 | NegateConditionals | negated conditional |
AuthorizationService | 60 | NullReturnVals | replaced return value with null for com/svenruppert/vaadin/security/authorization/api/AuthorizationService::permissionsFor (no coverage) |
CalibrationProfileStore | 84 | NegateConditionals | negated conditional |
CalibrationProfileStore | 90 | VoidMethodCall | removed call to java/io/BufferedWriter::write |
ContextAwarePasswordValidator | 99 | NegateConditionals | negated conditional |
ContextAwarePasswordValidator | 106 | VoidMethodCall | removed call to java/util/Arrays::fill |
ContextAwarePasswordValidator | 113 | BooleanTrueReturnVals | replaced boolean return with true for com/svenruppert/vaadin/security/credential/input/ContextAwarePasswordValidator::containsCaseInsensitive (no coverage) |
DefaultDummyVerificationService | 79 | NegateConditionals | negated conditional |
DefaultDummyVerificationService | 91 | NegateConditionals | negated conditional |
DefaultDummyVerificationService | 95 | NegateConditionals | negated conditional (no coverage) |
DefaultDummyVerificationService | 96 | EmptyObjectReturnVals | replaced return value with Optional.empty for com/svenruppert/vaadin/security/credential/password/dummy/DefaultDummyVerificationService::resolveAnyProvider (no coverage) |
DefaultDummyVerificationService | 99 | EmptyObjectReturnVals | replaced return value with Optional.empty for com/svenruppert/vaadin/security/credential/password/dummy/DefaultDummyVerificationService::resolveAnyProvider |
DefaultPasswordHashPolicy | 127 | EmptyObjectReturnVals | replaced return value with Collections.emptySet for com/svenruppert/vaadin/security/credential/password/policy/DefaultPasswordHashPolicy::acceptableAlgorithms (no coverage) |
DefaultPasswordHashPolicy | 132 | EmptyObjectReturnVals | replaced return value with Collections.emptySet for com/svenruppert/vaadin/security/credential/password/policy/DefaultPasswordHashPolicy::acceptableProviderIds (no coverage) |
DefaultPasswordHashPolicy$Builder | 218 | NullReturnVals | replaced return value with null for com/svenruppert/vaadin/security/credential/password/policy/DefaultPasswordHashPolicy$Builder::preferredFormatVersion (no coverage) |
DefaultPasswordHashPolicy$Builder | 235 | NullReturnVals | replaced return value with null for com/svenruppert/vaadin/security/credential/password/policy/DefaultPasswordHashPolicy$Builder::addAcceptableAlgorithm (no coverage) |
DefaultPasswordHashPolicy$Builder | 240 | NullReturnVals | replaced return value with null for com/svenruppert/vaadin/security/credential/password/policy/DefaultPasswordHashPolicy$Builder::addAcceptableProviderId (no coverage) |
DefaultPasswordHashingService | 129 | NullReturnVals | replaced return value with null for com/svenruppert/vaadin/security/credential/password/DefaultPasswordHashingService::lambda$hash$0 (no coverage) |
DefaultPasswordHashingService | 159 | NullReturnVals | replaced return value with null for com/svenruppert/vaadin/security/credential/password/DefaultPasswordHashingService::verifyAgainstNothing (no coverage) |
DefaultPasswordHashingService | 221 | VoidMethodCall | removed call to com/svenruppert/vaadin/security/credential/password/dummy/DummyVerificationService::runDummyKdf |
DefaultPasswordHashingService | 229 | VoidMethodCall | removed call to com/svenruppert/vaadin/security/credential/password/dummy/DummyVerificationService::runDummyKdf (no coverage) |
DefaultPasswordHashingService | 231 | NullReturnVals | replaced return value with null for com/svenruppert/vaadin/security/credential/password/DefaultPasswordHashingService::verifyUnderLease (no coverage) |
DefaultPasswordHashingService | 234 | VoidMethodCall | removed call to java/util/Arrays::fill |
DefaultPasswordHashingService | 280 | VoidMethodCall | removed call to java/util/Arrays::fill |
DefaultTenantAwarePepperReferenceResolver | 77 | PrimitiveReturns | replaced int return with 0 for com/svenruppert/vaadin/security/credential/tenant/DefaultTenantAwarePepperReferenceResolver::overrideCount (no coverage) |
EmailVerificationService | 229 | PrimitiveReturns | replaced int return with 0 for com/svenruppert/vaadin/security/accountlifecycle/EmailVerificationService::purgeExpired (no coverage) |
EmailVerificationService | 264 | VoidMethodCall | removed call to java/security/SecureRandom::nextBytes |
FileBootstrapTokenStore | 118 | NullReturnVals | replaced return value with null for com/svenruppert/vaadin/security/bootstrap/FileBootstrapTokenStore::path (no coverage) |
InMemoryAbuseDetectionService | 96 | ConditionalsBoundary | changed conditional boundary |
InMemoryAbuseDetectionService | 101 | ConditionalsBoundary | changed conditional boundary |
InMemoryAbuseDetectionService | 143 | NegateConditionals | negated conditional |
InMemoryAbuseDetectionService | 143 | EmptyObjectReturnVals | replaced return value with "" for com/svenruppert/vaadin/security/credential/abuse/InMemoryAbuseDetectionService::tenantKey |
InMemoryAbuseDetectionService | 183 | ConditionalsBoundary | changed conditional boundary |
InMemoryAbuseDetectionService | 222 | ConditionalsBoundary | changed conditional boundary |
InMemoryAbuseDetectionService | 222 | NegateConditionals | negated conditional |
InMemoryAbuseDetectionService | 223 | ConditionalsBoundary | changed conditional boundary |
InMemoryAbuseDetectionService | 240 | NullReturnVals | replaced return value with null for com/svenruppert/vaadin/security/credential/abuse/InMemoryAbuseDetectionService::dimensionOf |
InMemoryAbuseDetectionService | 243 | NullReturnVals | replaced return value with null for com/svenruppert/vaadin/security/credential/abuse/InMemoryAbuseDetectionService::dimensionOf |
InMemoryApiKeyStore | 67 | VoidMethodCall | removed call to java/util/concurrent/locks/ReentrantReadWriteLock$WriteLock::unlock |
InMemoryApiKeyStore | 85 | VoidMethodCall | removed call to java/util/concurrent/locks/ReentrantReadWriteLock$ReadLock::unlock |
InMemoryApiKeyStore | 97 | BooleanFalseReturnVals | replaced boolean return with false for com/svenruppert/vaadin/security/authentication/InMemoryApiKeyStore::markUsed |
InMemoryApiKeyStore | 100 | BooleanTrueReturnVals | replaced boolean return with true for com/svenruppert/vaadin/security/authentication/InMemoryApiKeyStore::markUsed |
InMemoryApiKeyStore | 102 | VoidMethodCall | removed call to java/util/concurrent/locks/ReentrantReadWriteLock$WriteLock::unlock |
InMemoryApiKeyStore | 114 | BooleanFalseReturnVals | replaced boolean return with false for com/svenruppert/vaadin/security/authentication/InMemoryApiKeyStore::revoke |
InMemoryApiKeyStore | 117 | BooleanTrueReturnVals | replaced boolean return with true for com/svenruppert/vaadin/security/authentication/InMemoryApiKeyStore::revoke |
InMemoryApiKeyStore | 119 | VoidMethodCall | removed call to java/util/concurrent/locks/ReentrantReadWriteLock$WriteLock::unlock |
InMemoryApiKeyStore | 130 | VoidMethodCall | removed call to java/util/concurrent/locks/ReentrantReadWriteLock$WriteLock::unlock |
InMemoryApiKeyStore | 143 | VoidMethodCall | removed call to java/util/concurrent/locks/ReentrantReadWriteLock$WriteLock::unlock |
InMemoryAuditEventStore | 61 | VoidMethodCall | removed call to java/util/concurrent/locks/ReentrantReadWriteLock$WriteLock::unlock |
InMemoryAuditEventStore | 80 | VoidMethodCall | removed call to java/util/concurrent/locks/ReentrantReadWriteLock$ReadLock::unlock |