|
1
|
|
package org.egothor.methodatlas; |
|
2
|
|
|
|
3
|
|
import java.io.IOException; |
|
4
|
|
import java.nio.file.Path; |
|
5
|
|
import java.util.ArrayList; |
|
6
|
|
import java.util.HashMap; |
|
7
|
|
import java.util.List; |
|
8
|
|
import java.util.Map; |
|
9
|
|
import java.util.Optional; |
|
10
|
|
|
|
11
|
|
import org.egothor.methodatlas.ai.AiClassSuggestion; |
|
12
|
|
import org.egothor.methodatlas.ai.AiMethodSuggestion; |
|
13
|
|
import org.egothor.methodatlas.ai.CredentialTriageVerdict; |
|
14
|
|
import org.egothor.methodatlas.api.ScanRecord; |
|
15
|
|
import org.egothor.methodatlas.emit.DeltaReport; |
|
16
|
|
|
|
17
|
|
/** |
|
18
|
|
* In-memory cache of AI results loaded from a previous MethodAtlas run, keyed by |
|
19
|
|
* the per-class {@code content_hash} fingerprint. |
|
20
|
|
* |
|
21
|
|
* <p> |
|
22
|
|
* Each entry ({@link AiCacheEntry}) holds the complete AI answer for one class — |
|
23
|
|
* method classifications <em>and</em> any credential-triage verdicts — plus the |
|
24
|
|
* prompt-catalogue signature that produced it. This lets one cached answer serve a |
|
25
|
|
* later classification-only run, a later credential run, or a combined run without |
|
26
|
|
* re-querying the model, provided the prompt signature still matches. An answer |
|
27
|
|
* obtained under a different prompt catalogue is never reused. |
|
28
|
|
* </p> |
|
29
|
|
* |
|
30
|
|
* <p> |
|
31
|
|
* Two source formats are accepted by {@link #load(Path)}: the unified JSON-Lines |
|
32
|
|
* cache (the format MethodAtlas now writes) and the legacy per-method scan CSV |
|
33
|
|
* (produced by older {@code -content-hash} runs). Legacy entries carry no prompt |
|
34
|
|
* signature and no credential verdicts: their classifications may still be reused |
|
35
|
|
* by content hash, but they can never satisfy a credential query. |
|
36
|
|
* </p> |
|
37
|
|
* |
|
38
|
|
* <p> |
|
39
|
|
* Instances are obtained via {@link #load(Path)} or the no-op {@link #empty()}. |
|
40
|
|
* Not thread-safe for the hit/miss counters; the scan loop is single-threaded. |
|
41
|
|
* </p> |
|
42
|
|
* |
|
43
|
|
* @see AiCacheStore |
|
44
|
|
* @see MethodAtlasApp |
|
45
|
|
*/ |
|
46
|
|
public final class AiResultCache { |
|
47
|
|
|
|
48
|
|
private final Map<String, AiCacheEntry> byHash; |
|
49
|
|
private int hits; |
|
50
|
|
private int misses; |
|
51
|
|
|
|
52
|
|
private AiResultCache(Map<String, AiCacheEntry> byHash) { |
|
53
|
|
this.byHash = byHash; |
|
54
|
|
} |
|
55
|
|
|
|
56
|
|
/** Returns an empty cache that always produces misses. */ |
|
57
|
|
public static AiResultCache empty() { |
|
58
|
1
1. empty : replaced return value with null for org/egothor/methodatlas/AiResultCache::empty → KILLED
|
return new AiResultCache(Map.of()); |
|
59
|
|
} |
|
60
|
|
|
|
61
|
|
/** |
|
62
|
|
* Loads a cache from a unified JSON-Lines cache file or a legacy scan CSV, |
|
63
|
|
* auto-detected from the file's first non-blank character. |
|
64
|
|
* |
|
65
|
|
* @param path path to a unified cache file or a legacy MethodAtlas CSV |
|
66
|
|
* @return loaded cache; never {@code null} |
|
67
|
|
* @throws IOException if the file cannot be read |
|
68
|
|
*/ |
|
69
|
|
public static AiResultCache load(Path path) throws IOException { |
|
70
|
|
Map<String, AiCacheEntry> byHash = new HashMap<>(); |
|
71
|
2
1. load : removed conditional - replaced equality check with false → KILLED
2. load : removed conditional - replaced equality check with true → KILLED
|
if (AiCacheStore.looksLikeJsonLines(path)) { |
|
72
|
|
for (AiCacheEntry entry : AiCacheStore.read(path)) { |
|
73
|
4
1. load : removed conditional - replaced equality check with true → SURVIVED
2. load : removed conditional - replaced equality check with true → SURVIVED
3. load : removed conditional - replaced equality check with false → KILLED
4. load : removed conditional - replaced equality check with false → KILLED
|
if (entry.contentHash() != null && !entry.contentHash().isEmpty() |
|
74
|
2
1. load : removed conditional - replaced equality check with true → SURVIVED
2. load : removed conditional - replaced equality check with false → KILLED
|
&& entry.suggestion() != null) { |
|
75
|
|
byHash.put(entry.contentHash(), entry); |
|
76
|
|
} |
|
77
|
|
} |
|
78
|
|
} else { |
|
79
|
1
1. load : removed call to org/egothor/methodatlas/AiResultCache::loadLegacyCsv → KILLED
|
loadLegacyCsv(path, byHash); |
|
80
|
|
} |
|
81
|
1
1. load : replaced return value with null for org/egothor/methodatlas/AiResultCache::load → KILLED
|
return new AiResultCache(byHash); |
|
82
|
|
} |
|
83
|
|
|
|
84
|
|
/** |
|
85
|
|
* Loads legacy entries from a per-method scan CSV. Only rows with a non-empty |
|
86
|
|
* {@code content_hash} and a non-{@code null} {@code ai_security_relevant} |
|
87
|
|
* column (AI was enabled) are included; the resulting entries carry no prompt |
|
88
|
|
* signature and no credential verdicts. |
|
89
|
|
* |
|
90
|
|
* @param csvPath legacy CSV path |
|
91
|
|
* @param byHash map to populate, keyed by content hash |
|
92
|
|
* @throws IOException if the file cannot be read |
|
93
|
|
*/ |
|
94
|
|
@SuppressWarnings("PMD.AvoidInstantiatingObjectsInLoops") |
|
95
|
|
private static void loadLegacyCsv(Path csvPath, Map<String, AiCacheEntry> byHash) throws IOException { |
|
96
|
|
List<ScanRecord> records = DeltaReport.loadRecords(csvPath); |
|
97
|
|
|
|
98
|
|
Map<String, List<ScanRecord>> grouped = new HashMap<>(); |
|
99
|
|
for (ScanRecord r : records) { |
|
100
|
6
1. loadLegacyCsv : removed conditional - replaced equality check with true → SURVIVED
2. loadLegacyCsv : removed conditional - replaced equality check with true → KILLED
3. loadLegacyCsv : removed conditional - replaced equality check with false → KILLED
4. loadLegacyCsv : removed conditional - replaced equality check with false → KILLED
5. loadLegacyCsv : removed conditional - replaced equality check with true → KILLED
6. loadLegacyCsv : removed conditional - replaced equality check with false → KILLED
|
if (r.contentHash() != null && !r.contentHash().isEmpty() && r.aiSecurityRelevant() != null) { |
|
101
|
1
1. lambda$loadLegacyCsv$0 : replaced return value with Collections.emptyList for org/egothor/methodatlas/AiResultCache::lambda$loadLegacyCsv$0 → KILLED
|
grouped.computeIfAbsent(r.contentHash(), k -> new ArrayList<>()).add(r); |
|
102
|
|
} |
|
103
|
|
} |
|
104
|
|
|
|
105
|
|
for (Map.Entry<String, List<ScanRecord>> entry : grouped.entrySet()) { |
|
106
|
|
List<AiMethodSuggestion> methods = new ArrayList<>(entry.getValue().size()); |
|
107
|
|
for (ScanRecord r : entry.getValue()) { |
|
108
|
|
methods.add(new AiMethodSuggestion( |
|
109
|
|
r.method(), |
|
110
|
|
Boolean.TRUE.equals(r.aiSecurityRelevant()), |
|
111
|
|
r.aiDisplayName(), |
|
112
|
2
1. loadLegacyCsv : removed conditional - replaced equality check with true → SURVIVED
2. loadLegacyCsv : removed conditional - replaced equality check with false → KILLED
|
r.aiTags() != null ? r.aiTags() : List.of(), |
|
113
|
|
r.aiReason(), |
|
114
|
2
1. loadLegacyCsv : removed conditional - replaced equality check with false → SURVIVED
2. loadLegacyCsv : removed conditional - replaced equality check with true → KILLED
|
r.aiConfidence() != null ? r.aiConfidence() : 0.0, |
|
115
|
2
1. loadLegacyCsv : removed conditional - replaced equality check with true → SURVIVED
2. loadLegacyCsv : removed conditional - replaced equality check with false → KILLED
|
r.aiInteractionScore() != null ? r.aiInteractionScore() : 0.0)); |
|
116
|
|
} |
|
117
|
|
AiClassSuggestion suggestion = new AiClassSuggestion(null, null, null, null, methods); |
|
118
|
|
byHash.put(entry.getKey(), new AiCacheEntry(entry.getKey(), null, suggestion)); |
|
119
|
|
} |
|
120
|
|
} |
|
121
|
|
|
|
122
|
|
/** |
|
123
|
|
* Returns the cached AI answer for a class by content hash, ignoring the prompt |
|
124
|
|
* signature. |
|
125
|
|
* |
|
126
|
|
* @param contentHash SHA-256 fingerprint of the class source, or {@code null} |
|
127
|
|
* @return cached suggestion, or empty on a miss or {@code null} hash |
|
128
|
|
*/ |
|
129
|
|
public Optional<AiClassSuggestion> lookup(String contentHash) { |
|
130
|
2
1. lookup : removed conditional - replaced equality check with false → SURVIVED
2. lookup : removed conditional - replaced equality check with true → KILLED
|
if (contentHash == null) { |
|
131
|
1
1. lookup : Replaced integer addition with subtraction → KILLED
|
misses++; |
|
132
|
|
return Optional.empty(); |
|
133
|
|
} |
|
134
|
|
AiCacheEntry entry = byHash.get(contentHash); |
|
135
|
2
1. lookup : removed conditional - replaced equality check with true → KILLED
2. lookup : removed conditional - replaced equality check with false → KILLED
|
if (entry != null) { |
|
136
|
1
1. lookup : Replaced integer addition with subtraction → KILLED
|
hits++; |
|
137
|
1
1. lookup : replaced return value with Optional.empty for org/egothor/methodatlas/AiResultCache::lookup → KILLED
|
return Optional.of(entry.suggestion()); |
|
138
|
|
} |
|
139
|
1
1. lookup : Replaced integer addition with subtraction → KILLED
|
misses++; |
|
140
|
|
return Optional.empty(); |
|
141
|
|
} |
|
142
|
|
|
|
143
|
|
/** |
|
144
|
|
* Returns the cached classification for a class when the content hash matches and |
|
145
|
|
* the cached answer is compatible with the current prompt catalogue. |
|
146
|
|
* |
|
147
|
|
* <p> |
|
148
|
|
* A unified entry must carry a matching {@code promptSignature}; a legacy entry |
|
149
|
|
* (no signature) is served by content hash alone, preserving prior behaviour. |
|
150
|
|
* Updates the hit/miss counters. |
|
151
|
|
* </p> |
|
152
|
|
* |
|
153
|
|
* @param contentHash SHA-256 fingerprint of the class source, or {@code null} |
|
154
|
|
* @param promptSignature signature of the current run's prompt catalogue |
|
155
|
|
* @return cached classification, or empty on a miss |
|
156
|
|
*/ |
|
157
|
|
public Optional<AiClassSuggestion> classification(String contentHash, String promptSignature) { |
|
158
|
2
1. classification : removed conditional - replaced equality check with true → KILLED
2. classification : removed conditional - replaced equality check with false → KILLED
|
AiCacheEntry entry = contentHash == null ? null : byHash.get(contentHash); |
|
159
|
4
1. classification : removed conditional - replaced equality check with false → KILLED
2. classification : removed conditional - replaced equality check with true → KILLED
3. classification : removed conditional - replaced equality check with false → KILLED
4. classification : removed conditional - replaced equality check with true → KILLED
|
if (entry != null && (entry.promptSignature() == null |
|
160
|
2
1. classification : removed conditional - replaced equality check with false → KILLED
2. classification : removed conditional - replaced equality check with true → KILLED
|
|| entry.promptSignature().equals(promptSignature))) { |
|
161
|
1
1. classification : Replaced integer addition with subtraction → SURVIVED
|
hits++; |
|
162
|
1
1. classification : replaced return value with Optional.empty for org/egothor/methodatlas/AiResultCache::classification → KILLED
|
return Optional.of(entry.suggestion()); |
|
163
|
|
} |
|
164
|
1
1. classification : Replaced integer addition with subtraction → SURVIVED
|
misses++; |
|
165
|
|
return Optional.empty(); |
|
166
|
|
} |
|
167
|
|
|
|
168
|
|
/** |
|
169
|
|
* Returns cached credential-triage verdicts for a class when the content hash and |
|
170
|
|
* the prompt signature both match and verdicts were actually recorded. |
|
171
|
|
* |
|
172
|
|
* <p> |
|
173
|
|
* Unlike {@link #classification(String, String)} this requires a non-{@code null} |
|
174
|
|
* matching signature (a legacy entry can never satisfy a credential query) and |
|
175
|
|
* does not touch the hit/miss counters. |
|
176
|
|
* </p> |
|
177
|
|
* |
|
178
|
|
* @param contentHash SHA-256 fingerprint of the class source, or {@code null} |
|
179
|
|
* @param promptSignature signature of the current run's prompt catalogue |
|
180
|
|
* @return cached verdicts, or empty when none are cached for this signature |
|
181
|
|
*/ |
|
182
|
|
public Optional<List<CredentialTriageVerdict>> verdicts(String contentHash, String promptSignature) { |
|
183
|
2
1. verdicts : removed conditional - replaced equality check with false → SURVIVED
2. verdicts : removed conditional - replaced equality check with true → KILLED
|
AiCacheEntry entry = contentHash == null ? null : byHash.get(contentHash); |
|
184
|
4
1. verdicts : removed conditional - replaced equality check with true → SURVIVED
2. verdicts : removed conditional - replaced equality check with false → KILLED
3. verdicts : removed conditional - replaced equality check with false → KILLED
4. verdicts : removed conditional - replaced equality check with true → KILLED
|
if (entry != null && entry.promptSignature() != null |
|
185
|
2
1. verdicts : removed conditional - replaced equality check with true → KILLED
2. verdicts : removed conditional - replaced equality check with false → KILLED
|
&& entry.promptSignature().equals(promptSignature) |
|
186
|
2
1. verdicts : removed conditional - replaced equality check with false → KILLED
2. verdicts : removed conditional - replaced equality check with true → KILLED
|
&& entry.suggestion().secrets() != null) { |
|
187
|
1
1. verdicts : replaced return value with Optional.empty for org/egothor/methodatlas/AiResultCache::verdicts → KILLED
|
return Optional.of(entry.suggestion().secrets()); |
|
188
|
|
} |
|
189
|
|
return Optional.empty(); |
|
190
|
|
} |
|
191
|
|
|
|
192
|
|
/** |
|
193
|
|
* Returns {@code true} when this cache contains at least one entry. |
|
194
|
|
* |
|
195
|
|
* <p>When {@code false}, content hashes do not need to be computed for lookups |
|
196
|
|
* because all results would be misses regardless.</p> |
|
197
|
|
* |
|
198
|
|
* @return {@code true} when the cache is non-empty |
|
199
|
|
*/ |
|
200
|
|
public boolean isActive() { |
|
201
|
3
1. isActive : replaced boolean return with true for org/egothor/methodatlas/AiResultCache::isActive → KILLED
2. isActive : removed conditional - replaced equality check with false → KILLED
3. isActive : removed conditional - replaced equality check with true → KILLED
|
return !byHash.isEmpty(); |
|
202
|
|
} |
|
203
|
|
|
|
204
|
|
/** Returns the number of successful cache lookups so far. */ |
|
205
|
|
public int hits() { |
|
206
|
1
1. hits : replaced int return with 0 for org/egothor/methodatlas/AiResultCache::hits → KILLED
|
return hits; |
|
207
|
|
} |
|
208
|
|
|
|
209
|
|
/** Returns the number of unsuccessful cache lookups so far. */ |
|
210
|
|
public int misses() { |
|
211
|
1
1. misses : replaced int return with 0 for org/egothor/methodatlas/AiResultCache::misses → KILLED
|
return misses; |
|
212
|
|
} |
|
213
|
|
} |
| | Mutations |
| 58 |
|
1.1 Location : empty Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:empty_isNotActiveAndAlwaysMisses()] replaced return value with null for org/egothor/methodatlas/AiResultCache::empty → KILLED
|
| 71 |
|
1.1 Location : load Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_roundTripsClassificationAndVerdicts(java.nio.file.Path)] removed conditional - replaced equality check with false → KILLED
2.2 Location : load Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_multipleMethodsSameHash_groupedIntoOneSuggestion(java.nio.file.Path)] removed conditional - replaced equality check with true → KILLED
|
| 73 |
|
1.1 Location : load Killed by : none removed conditional - replaced equality check with true → SURVIVED
Covering tests
Covered by tests:
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_roundTripsClassificationAndVerdicts(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_signatureMismatchMissesBoth(java.nio.file.Path)]
- org.egothor.methodatlas.command.ScanOrchestratorCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.command.ScanOrchestratorCacheTest]/[method:cacheHit_withMatchingSignatureAndVerdicts_servesBothWithoutAnyEngineCall(java.nio.file.Path)]
- org.egothor.methodatlas.command.ScanOrchestratorCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.command.ScanOrchestratorCacheTest]/[method:cacheHit_withoutVerdicts_issuesExactlyOneDedicatedTriageCall(java.nio.file.Path)]
- org.egothor.methodatlas.command.ScanOrchestratorCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.command.ScanOrchestratorCacheTest]/[method:cacheEntryFromDifferentPromptCatalogue_isNotReused(java.nio.file.Path)]
2.2 Location : load Killed by : none removed conditional - replaced equality check with true → SURVIVED
Covering tests
Covered by tests:
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_roundTripsClassificationAndVerdicts(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_signatureMismatchMissesBoth(java.nio.file.Path)]
- org.egothor.methodatlas.command.ScanOrchestratorCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.command.ScanOrchestratorCacheTest]/[method:cacheHit_withMatchingSignatureAndVerdicts_servesBothWithoutAnyEngineCall(java.nio.file.Path)]
- org.egothor.methodatlas.command.ScanOrchestratorCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.command.ScanOrchestratorCacheTest]/[method:cacheHit_withoutVerdicts_issuesExactlyOneDedicatedTriageCall(java.nio.file.Path)]
- org.egothor.methodatlas.command.ScanOrchestratorCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.command.ScanOrchestratorCacheTest]/[method:cacheEntryFromDifferentPromptCatalogue_isNotReused(java.nio.file.Path)]
3.3 Location : load Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_roundTripsClassificationAndVerdicts(java.nio.file.Path)] removed conditional - replaced equality check with false → KILLED
4.4 Location : load Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_roundTripsClassificationAndVerdicts(java.nio.file.Path)] removed conditional - replaced equality check with false → KILLED
|
| 74 |
|
1.1 Location : load Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_roundTripsClassificationAndVerdicts(java.nio.file.Path)] removed conditional - replaced equality check with false → KILLED
2.2 Location : load Killed by : none removed conditional - replaced equality check with true → SURVIVED
Covering tests
Covered by tests:
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_roundTripsClassificationAndVerdicts(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_signatureMismatchMissesBoth(java.nio.file.Path)]
- org.egothor.methodatlas.command.ScanOrchestratorCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.command.ScanOrchestratorCacheTest]/[method:cacheHit_withMatchingSignatureAndVerdicts_servesBothWithoutAnyEngineCall(java.nio.file.Path)]
- org.egothor.methodatlas.command.ScanOrchestratorCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.command.ScanOrchestratorCacheTest]/[method:cacheHit_withoutVerdicts_issuesExactlyOneDedicatedTriageCall(java.nio.file.Path)]
- org.egothor.methodatlas.command.ScanOrchestratorCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.command.ScanOrchestratorCacheTest]/[method:cacheEntryFromDifferentPromptCatalogue_isNotReused(java.nio.file.Path)]
|
| 79 |
|
1.1 Location : load Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_multipleMethodsSameHash_groupedIntoOneSuggestion(java.nio.file.Path)] removed call to org/egothor/methodatlas/AiResultCache::loadLegacyCsv → KILLED
|
| 81 |
|
1.1 Location : load Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_csvWithoutAiColumns_producesInactiveCache(java.nio.file.Path)] replaced return value with null for org/egothor/methodatlas/AiResultCache::load → KILLED
|
| 100 |
|
1.1 Location : loadLegacyCsv Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_csvWithoutContentHashColumn_producesInactiveCache(java.nio.file.Path)] removed conditional - replaced equality check with true → KILLED
2.2 Location : loadLegacyCsv Killed by : none removed conditional - replaced equality check with true → SURVIVED
Covering tests
Covered by tests:
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_csvWithoutAiColumns_producesInactiveCache(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:lookup_nullHash_returnsMissAndIncrementsMisses(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_multipleMethodsSameHash_groupedIntoOneSuggestion(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_nonSecurityMethod_cachedAndRestoredAsNonSecurity(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:legacyCsvEntry_servesClassificationNotVerdicts(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_methodSuggestionFieldsRestoredCorrectly(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_csvWithContentHashAndAiColumns_hitOnMatchingHash(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:lookup_unknownHash_returnsMiss(java.nio.file.Path)]
- org.egothor.methodatlas.MethodAtlasAppAiTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppAiTest]/[method:aiCache_miss_engineCalledForUnknownHash(java.nio.file.Path)]
- org.egothor.methodatlas.MethodAtlasAppAiTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppAiTest]/[method:aiCache_hit_engineNotCalledForUnchangedClass(java.nio.file.Path)]
3.3 Location : loadLegacyCsv Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_multipleMethodsSameHash_groupedIntoOneSuggestion(java.nio.file.Path)] removed conditional - replaced equality check with false → KILLED
4.4 Location : loadLegacyCsv Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_multipleMethodsSameHash_groupedIntoOneSuggestion(java.nio.file.Path)] removed conditional - replaced equality check with false → KILLED
5.5 Location : loadLegacyCsv Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_csvWithoutAiColumns_producesInactiveCache(java.nio.file.Path)] removed conditional - replaced equality check with true → KILLED
6.6 Location : loadLegacyCsv Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_multipleMethodsSameHash_groupedIntoOneSuggestion(java.nio.file.Path)] removed conditional - replaced equality check with false → KILLED
|
| 101 |
|
1.1 Location : lambda$loadLegacyCsv$0 Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:lookup_nullHash_returnsMissAndIncrementsMisses(java.nio.file.Path)] replaced return value with Collections.emptyList for org/egothor/methodatlas/AiResultCache::lambda$loadLegacyCsv$0 → KILLED
|
| 112 |
|
1.1 Location : loadLegacyCsv Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_methodSuggestionFieldsRestoredCorrectly(java.nio.file.Path)] removed conditional - replaced equality check with false → KILLED
2.2 Location : loadLegacyCsv Killed by : none removed conditional - replaced equality check with true → SURVIVED
Covering tests
Covered by tests:
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:lookup_nullHash_returnsMissAndIncrementsMisses(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_multipleMethodsSameHash_groupedIntoOneSuggestion(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_nonSecurityMethod_cachedAndRestoredAsNonSecurity(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:legacyCsvEntry_servesClassificationNotVerdicts(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_methodSuggestionFieldsRestoredCorrectly(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_csvWithContentHashAndAiColumns_hitOnMatchingHash(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:lookup_unknownHash_returnsMiss(java.nio.file.Path)]
- org.egothor.methodatlas.MethodAtlasAppAiTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppAiTest]/[method:aiCache_miss_engineCalledForUnknownHash(java.nio.file.Path)]
- org.egothor.methodatlas.MethodAtlasAppAiTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppAiTest]/[method:aiCache_hit_engineNotCalledForUnchangedClass(java.nio.file.Path)]
|
| 114 |
|
1.1 Location : loadLegacyCsv Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:lookup_nullHash_returnsMissAndIncrementsMisses(java.nio.file.Path)] removed conditional - replaced equality check with true → KILLED
2.2 Location : loadLegacyCsv Killed by : none removed conditional - replaced equality check with false → SURVIVED
Covering tests
Covered by tests:
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:lookup_nullHash_returnsMissAndIncrementsMisses(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_multipleMethodsSameHash_groupedIntoOneSuggestion(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_nonSecurityMethod_cachedAndRestoredAsNonSecurity(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:legacyCsvEntry_servesClassificationNotVerdicts(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_methodSuggestionFieldsRestoredCorrectly(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_csvWithContentHashAndAiColumns_hitOnMatchingHash(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:lookup_unknownHash_returnsMiss(java.nio.file.Path)]
- org.egothor.methodatlas.MethodAtlasAppAiTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppAiTest]/[method:aiCache_miss_engineCalledForUnknownHash(java.nio.file.Path)]
- org.egothor.methodatlas.MethodAtlasAppAiTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppAiTest]/[method:aiCache_hit_engineNotCalledForUnchangedClass(java.nio.file.Path)]
|
| 115 |
|
1.1 Location : loadLegacyCsv Killed by : none removed conditional - replaced equality check with true → SURVIVED
Covering tests
Covered by tests:
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:lookup_nullHash_returnsMissAndIncrementsMisses(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_multipleMethodsSameHash_groupedIntoOneSuggestion(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_nonSecurityMethod_cachedAndRestoredAsNonSecurity(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:legacyCsvEntry_servesClassificationNotVerdicts(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_methodSuggestionFieldsRestoredCorrectly(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_csvWithContentHashAndAiColumns_hitOnMatchingHash(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:lookup_unknownHash_returnsMiss(java.nio.file.Path)]
- org.egothor.methodatlas.MethodAtlasAppAiTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppAiTest]/[method:aiCache_miss_engineCalledForUnknownHash(java.nio.file.Path)]
- org.egothor.methodatlas.MethodAtlasAppAiTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppAiTest]/[method:aiCache_hit_engineNotCalledForUnchangedClass(java.nio.file.Path)]
2.2 Location : loadLegacyCsv Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_methodSuggestionFieldsRestoredCorrectly(java.nio.file.Path)] removed conditional - replaced equality check with false → KILLED
|
| 130 |
|
1.1 Location : lookup Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_multipleMethodsSameHash_groupedIntoOneSuggestion(java.nio.file.Path)] removed conditional - replaced equality check with true → KILLED
2.2 Location : lookup Killed by : none removed conditional - replaced equality check with false → SURVIVED
Covering tests
Covered by tests:
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:empty_isNotActiveAndAlwaysMisses()]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_csvWithoutAiColumns_producesInactiveCache(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_csvWithoutContentHashColumn_producesInactiveCache(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:lookup_nullHash_returnsMissAndIncrementsMisses(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_multipleMethodsSameHash_groupedIntoOneSuggestion(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_nonSecurityMethod_cachedAndRestoredAsNonSecurity(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_methodSuggestionFieldsRestoredCorrectly(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_csvWithContentHashAndAiColumns_hitOnMatchingHash(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:lookup_unknownHash_returnsMiss(java.nio.file.Path)]
|
| 131 |
|
1.1 Location : lookup Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:lookup_nullHash_returnsMissAndIncrementsMisses(java.nio.file.Path)] Replaced integer addition with subtraction → KILLED
|
| 135 |
|
1.1 Location : lookup Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:empty_isNotActiveAndAlwaysMisses()] removed conditional - replaced equality check with true → KILLED
2.2 Location : lookup Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_multipleMethodsSameHash_groupedIntoOneSuggestion(java.nio.file.Path)] removed conditional - replaced equality check with false → KILLED
|
| 136 |
|
1.1 Location : lookup Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_csvWithContentHashAndAiColumns_hitOnMatchingHash(java.nio.file.Path)] Replaced integer addition with subtraction → KILLED
|
| 137 |
|
1.1 Location : lookup Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_multipleMethodsSameHash_groupedIntoOneSuggestion(java.nio.file.Path)] replaced return value with Optional.empty for org/egothor/methodatlas/AiResultCache::lookup → KILLED
|
| 139 |
|
1.1 Location : lookup Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:empty_isNotActiveAndAlwaysMisses()] Replaced integer addition with subtraction → KILLED
|
| 158 |
|
1.1 Location : classification Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_roundTripsClassificationAndVerdicts(java.nio.file.Path)] removed conditional - replaced equality check with true → KILLED
2.2 Location : classification Killed by : org.egothor.methodatlas.MethodAtlasAppApplyTagsTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppApplyTagsTest]/[method:applyTags_noImportsAddedWhenNothingAnnotated(java.nio.file.Path)] removed conditional - replaced equality check with false → KILLED
|
| 159 |
|
1.1 Location : classification Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_signatureMismatchMissesBoth(java.nio.file.Path)] removed conditional - replaced equality check with false → KILLED
2.2 Location : classification Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:legacyCsvEntry_servesClassificationNotVerdicts(java.nio.file.Path)] removed conditional - replaced equality check with true → KILLED
3.3 Location : classification Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_roundTripsClassificationAndVerdicts(java.nio.file.Path)] removed conditional - replaced equality check with false → KILLED
4.4 Location : classification Killed by : org.egothor.methodatlas.command.ScanOrchestratorCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.command.ScanOrchestratorCacheTest]/[method:cacheMiss_runsCombinedClassificationAndRecordsVerdicts(java.nio.file.Path)] removed conditional - replaced equality check with true → KILLED
|
| 160 |
|
1.1 Location : classification Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_roundTripsClassificationAndVerdicts(java.nio.file.Path)] removed conditional - replaced equality check with false → KILLED
2.2 Location : classification Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_signatureMismatchMissesBoth(java.nio.file.Path)] removed conditional - replaced equality check with true → KILLED
|
| 161 |
|
1.1 Location : classification Killed by : none Replaced integer addition with subtraction → SURVIVED
Covering tests
Covered by tests:
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_roundTripsClassificationAndVerdicts(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:legacyCsvEntry_servesClassificationNotVerdicts(java.nio.file.Path)]
- org.egothor.methodatlas.command.ScanOrchestratorCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.command.ScanOrchestratorCacheTest]/[method:cacheHit_withMatchingSignatureAndVerdicts_servesBothWithoutAnyEngineCall(java.nio.file.Path)]
- org.egothor.methodatlas.command.ScanOrchestratorCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.command.ScanOrchestratorCacheTest]/[method:cacheHit_withoutVerdicts_issuesExactlyOneDedicatedTriageCall(java.nio.file.Path)]
- org.egothor.methodatlas.MethodAtlasAppAiTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppAiTest]/[method:aiCache_hit_engineNotCalledForUnchangedClass(java.nio.file.Path)]
|
| 162 |
|
1.1 Location : classification Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_roundTripsClassificationAndVerdicts(java.nio.file.Path)] replaced return value with Optional.empty for org/egothor/methodatlas/AiResultCache::classification → KILLED
|
| 164 |
|
1.1 Location : classification Killed by : none Replaced integer addition with subtraction → SURVIVED
Covering tests
Covered by tests:
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_signatureMismatchMissesBoth(java.nio.file.Path)]
- org.egothor.methodatlas.command.ScanOrchestratorCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.command.ScanOrchestratorCacheTest]/[method:cacheMiss_runsCombinedClassificationAndRecordsVerdicts(java.nio.file.Path)]
- org.egothor.methodatlas.command.ScanOrchestratorCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.command.ScanOrchestratorCacheTest]/[method:cacheEntryFromDifferentPromptCatalogue_isNotReused(java.nio.file.Path)]
- org.egothor.methodatlas.MethodAtlasAppApplyTagsTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppApplyTagsTest]/[method:applyTags_noImportsAddedWhenNothingAnnotated(java.nio.file.Path)]
- org.egothor.methodatlas.MethodAtlasAppApplyTagsTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppApplyTagsTest]/[method:applyTags_nonSecurityMethod_notAnnotated(java.nio.file.Path)]
- org.egothor.methodatlas.MethodAtlasAppApplyTagsTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppApplyTagsTest]/[method:applyTags_existingAnnotationsNotDuplicated(java.nio.file.Path)]
- org.egothor.methodatlas.MethodAtlasAppApplyTagsTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppApplyTagsTest]/[method:applyTags_addsTagImport(java.nio.file.Path)]
- org.egothor.methodatlas.MethodAtlasAppApplyTagsTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppApplyTagsTest]/[method:applyTags_addsDisplayNameImport(java.nio.file.Path)]
- org.egothor.methodatlas.MethodAtlasAppManualTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppManualTest]/[method:manualConsume_emitsEmptyAiColumnsForClassesWithoutResponseFile(java.nio.file.Path)]
- org.egothor.methodatlas.MethodAtlasAppApplyTagsTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppApplyTagsTest]/[method:applyTags_summaryCountsMatchAnnotationsAdded(java.nio.file.Path)]
- org.egothor.methodatlas.MethodAtlasAppApplyTagsTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppApplyTagsTest]/[method:applyTags_withAi_annotatesSecurityRelevantMethod(java.nio.file.Path)]
- org.egothor.methodatlas.MethodAtlasAppJsonTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppJsonTest]/[method:minConfidence_filtersLowConfidenceMethods(java.nio.file.Path)]
- org.egothor.methodatlas.MethodAtlasAppManualTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppManualTest]/[method:manualConsume_emitsEnrichedCsvForClassesWithResponseFiles(java.nio.file.Path)]
- org.egothor.methodatlas.MethodAtlasAppJsonTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppJsonTest]/[method:jsonMode_withAiAndConfidence_confidenceIsNumber(java.nio.file.Path)]
- org.egothor.methodatlas.MethodAtlasAppManualTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppManualTest]/[method:manualConsume_mixesEnrichedAndEmptyRowsForPartialResponses(java.nio.file.Path)]
- org.egothor.methodatlas.MethodAtlasAppJsonTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppJsonTest]/[method:jsonMode_withAi_aiTagsIsArray(java.nio.file.Path)]
- org.egothor.methodatlas.MethodAtlasAppAiTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppAiTest]/[method:csvMode_oversizedClass_skipsAiLookup_andLeavesAiColumnsEmpty(java.nio.file.Path)]
- org.egothor.methodatlas.MethodAtlasAppAiTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppAiTest]/[method:aiCache_miss_engineCalledForUnknownHash(java.nio.file.Path)]
- org.egothor.methodatlas.MethodAtlasAppAiTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppAiTest]/[method:plainMode_aiFailureForOneClass_continuesScanningAndFallsBackForThatClass(java.nio.file.Path)]
- org.egothor.methodatlas.MethodAtlasAppAiTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppAiTest]/[method:csvMode_aiEnabled_withRealisticFixtures_emitsMergedAiSuggestions(java.nio.file.Path)]
- org.egothor.methodatlas.MethodAtlasAppAiTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppAiTest]/[method:aiCache_hit_engineNotCalledForUnchangedClass(java.nio.file.Path)]
|
| 183 |
|
1.1 Location : verdicts Killed by : none removed conditional - replaced equality check with false → SURVIVED
Covering tests
Covered by tests:
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_roundTripsClassificationAndVerdicts(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:legacyCsvEntry_servesClassificationNotVerdicts(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_signatureMismatchMissesBoth(java.nio.file.Path)]
- org.egothor.methodatlas.command.ScanOrchestratorCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.command.ScanOrchestratorCacheTest]/[method:cacheHit_withMatchingSignatureAndVerdicts_servesBothWithoutAnyEngineCall(java.nio.file.Path)]
- org.egothor.methodatlas.command.ScanOrchestratorCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.command.ScanOrchestratorCacheTest]/[method:cacheHit_withoutVerdicts_issuesExactlyOneDedicatedTriageCall(java.nio.file.Path)]
2.2 Location : verdicts Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_roundTripsClassificationAndVerdicts(java.nio.file.Path)] removed conditional - replaced equality check with true → KILLED
|
| 184 |
|
1.1 Location : verdicts Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_roundTripsClassificationAndVerdicts(java.nio.file.Path)] removed conditional - replaced equality check with false → KILLED
2.2 Location : verdicts Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_roundTripsClassificationAndVerdicts(java.nio.file.Path)] removed conditional - replaced equality check with false → KILLED
3.3 Location : verdicts Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:legacyCsvEntry_servesClassificationNotVerdicts(java.nio.file.Path)] removed conditional - replaced equality check with true → KILLED
4.4 Location : verdicts Killed by : none removed conditional - replaced equality check with true → SURVIVED
Covering tests
Covered by tests:
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_roundTripsClassificationAndVerdicts(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:legacyCsvEntry_servesClassificationNotVerdicts(java.nio.file.Path)]
- org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_signatureMismatchMissesBoth(java.nio.file.Path)]
- org.egothor.methodatlas.command.ScanOrchestratorCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.command.ScanOrchestratorCacheTest]/[method:cacheHit_withMatchingSignatureAndVerdicts_servesBothWithoutAnyEngineCall(java.nio.file.Path)]
- org.egothor.methodatlas.command.ScanOrchestratorCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.command.ScanOrchestratorCacheTest]/[method:cacheHit_withoutVerdicts_issuesExactlyOneDedicatedTriageCall(java.nio.file.Path)]
|
| 185 |
|
1.1 Location : verdicts Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_signatureMismatchMissesBoth(java.nio.file.Path)] removed conditional - replaced equality check with true → KILLED
2.2 Location : verdicts Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_roundTripsClassificationAndVerdicts(java.nio.file.Path)] removed conditional - replaced equality check with false → KILLED
|
| 186 |
|
1.1 Location : verdicts Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_roundTripsClassificationAndVerdicts(java.nio.file.Path)] removed conditional - replaced equality check with false → KILLED
2.2 Location : verdicts Killed by : org.egothor.methodatlas.command.ScanOrchestratorCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.command.ScanOrchestratorCacheTest]/[method:cacheHit_withoutVerdicts_issuesExactlyOneDedicatedTriageCall(java.nio.file.Path)] removed conditional - replaced equality check with true → KILLED
|
| 187 |
|
1.1 Location : verdicts Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:unifiedCache_roundTripsClassificationAndVerdicts(java.nio.file.Path)] replaced return value with Optional.empty for org/egothor/methodatlas/AiResultCache::verdicts → KILLED
|
| 201 |
|
1.1 Location : isActive Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:empty_isNotActiveAndAlwaysMisses()] replaced boolean return with true for org/egothor/methodatlas/AiResultCache::isActive → KILLED
2.2 Location : isActive Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_nonSecurityMethod_cachedAndRestoredAsNonSecurity(java.nio.file.Path)] removed conditional - replaced equality check with false → KILLED
3.3 Location : isActive Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:empty_isNotActiveAndAlwaysMisses()] removed conditional - replaced equality check with true → KILLED
|
| 206 |
|
1.1 Location : hits Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:load_csvWithContentHashAndAiColumns_hitOnMatchingHash(java.nio.file.Path)] replaced int return with 0 for org/egothor/methodatlas/AiResultCache::hits → KILLED
|
| 211 |
|
1.1 Location : misses Killed by : org.egothor.methodatlas.AiResultCacheTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.AiResultCacheTest]/[method:empty_isNotActiveAndAlwaysMisses()] replaced int return with 0 for org/egothor/methodatlas/AiResultCache::misses → KILLED
|