OutputEmitter.java

1
package org.egothor.methodatlas.emit;
2
3
import java.io.PrintWriter;
4
import java.util.List;
5
6
import org.egothor.methodatlas.OutputMode;
7
import org.egothor.methodatlas.TagAiDrift;
8
import org.egothor.methodatlas.ai.AiMethodSuggestion;
9
10
/**
11
 * Formats and emits test method records to a configured output writer.
12
 *
13
 * <p>
14
 * This class centralizes all output rendering logic for the MethodAtlas
15
 * application. It supports both CSV and plain-text output modes and handles
16
 * optional AI enrichment columns.
17
 * </p>
18
 *
19
 * <p>
20
 * The {@link PrintWriter} supplied at construction time is the sole output
21
 * destination, which allows the caller to redirect output for testing or
22
 * piping without manipulating {@code System.out}.
23
 * </p>
24
 *
25
 * <p>
26
 * Instances of this class are immutable after construction.
27
 * </p>
28
 *
29
 * @see OutputMode
30
 */
31
public final class OutputEmitter {
32
33
    private static final String PLAIN_ABSENT = "-";
34
    private static final String CSV_ABSENT = "";
35
36
    private final PrintWriter out;
37
    private final boolean aiEnabled;
38
    private final boolean confidenceEnabled;
39
    private final boolean contentHashEnabled;
40
    private final boolean driftDetect;
41
    private final boolean emitSourceRoot;
42
43
    /**
44
     * Creates a new output emitter bound to the supplied writer.
45
     *
46
     * @param out                writer to which all records are emitted
47
     * @param aiEnabled          whether AI enrichment columns should be included
48
     * @param confidenceEnabled  whether the {@code ai_confidence} column should be
49
     *                           included; only meaningful when {@code aiEnabled} is
50
     *                           {@code true}
51
     * @param contentHashEnabled whether the {@code content_hash} column should be
52
     *                           included
53
     * @param driftDetect        whether the {@code tag_ai_drift} column should be
54
     *                           included; only meaningful when {@code aiEnabled} is
55
     *                           {@code true}
56
     * @param emitSourceRoot     whether a {@code source_root} column (CSV) or
57
     *                           {@code SRCROOT=} token (plain) should be included;
58
     *                           enable with {@code -emit-source-root} when scanning
59
     *                           a multi-root project where the same FQCN can appear
60
     *                           under different source trees
61
     */
62
    public OutputEmitter(PrintWriter out, boolean aiEnabled, boolean confidenceEnabled,
63
            boolean contentHashEnabled, boolean driftDetect, boolean emitSourceRoot) {
64
        this.out = out;
65
        this.aiEnabled = aiEnabled;
66
        this.confidenceEnabled = confidenceEnabled;
67
        this.contentHashEnabled = contentHashEnabled;
68
        this.driftDetect = driftDetect;
69
        this.emitSourceRoot = emitSourceRoot;
70
    }
71
72
    /**
73
     * Emits {@code # key: value} metadata comment lines before the CSV header.
74
     *
75
     * @param version       tool version string, e.g. {@code 1.2.3} or {@code dev}
76
     * @param scanTimestamp ISO-8601 timestamp of the scan start
77
     * @param taxonomyInfo  human-readable taxonomy descriptor
78
     */
79
    public void emitMetadata(String version, String scanTimestamp, String taxonomyInfo) {
80 1 1. emitMetadata : removed call to java/io/PrintWriter::println → KILLED
        out.println("# tool_version: " + version);
81 1 1. emitMetadata : removed call to java/io/PrintWriter::println → KILLED
        out.println("# scan_timestamp: " + scanTimestamp);
82 1 1. emitMetadata : removed call to java/io/PrintWriter::println → KILLED
        out.println("# taxonomy: " + taxonomyInfo);
83
    }
84
85
    /**
86
     * Emits the CSV header line when {@link OutputMode#CSV} is selected.
87
     *
88
     * <p>
89
     * Does nothing when plain-text mode is active.
90
     * </p>
91
     *
92
     * @param mode selected output mode
93
     */
94
    public void emitCsvHeader(OutputMode mode) {
95 2 1. emitCsvHeader : removed conditional - replaced equality check with false → KILLED
2. emitCsvHeader : removed conditional - replaced equality check with true → KILLED
        if (mode != OutputMode.CSV) {
96
            return;
97
        }
98
        StringBuilder header = new StringBuilder(256).append("fqcn,method,loc,tags,display_name");
99 2 1. emitCsvHeader : removed conditional - replaced equality check with true → KILLED
2. emitCsvHeader : removed conditional - replaced equality check with false → KILLED
        if (emitSourceRoot) {
100
            header.append(",source_root");
101
        }
102 2 1. emitCsvHeader : removed conditional - replaced equality check with false → KILLED
2. emitCsvHeader : removed conditional - replaced equality check with true → KILLED
        if (contentHashEnabled) {
103
            header.append(",content_hash");
104
        }
105 2 1. emitCsvHeader : removed conditional - replaced equality check with true → KILLED
2. emitCsvHeader : removed conditional - replaced equality check with false → KILLED
        if (aiEnabled) {
106
            header.append(",ai_security_relevant,ai_display_name,ai_tags,ai_reason,ai_interaction_score");
107 2 1. emitCsvHeader : removed conditional - replaced equality check with true → KILLED
2. emitCsvHeader : removed conditional - replaced equality check with false → KILLED
            if (confidenceEnabled) {
108
                header.append(",ai_confidence");
109
            }
110 2 1. emitCsvHeader : removed conditional - replaced equality check with true → KILLED
2. emitCsvHeader : removed conditional - replaced equality check with false → KILLED
            if (driftDetect) {
111
                header.append(",tag_ai_drift");
112
            }
113
        }
114 1 1. emitCsvHeader : removed call to java/io/PrintWriter::println → KILLED
        out.println(header.toString());
115
    }
116
117
    /**
118
     * Emits a single test method record in the configured output mode.
119
     *
120
     * @param mode        selected output mode
121
     * @param fqcn        fully qualified class name containing the method
122
     * @param method      test method name
123
     * @param loc         inclusive line count of the method declaration
124
     * @param contentHash SHA-256 fingerprint of the enclosing class source, or
125
     *                    {@code null} when {@code -content-hash} is not enabled
126
     * @param tags        source-level tags extracted from the method
127
     * @param displayName text from an existing display-name annotation on the
128
     *                    method, or an empty string if absent; {@code null}
129
     *                    is treated as absent
130
     * @param suggestion  AI suggestion for the method, or {@code null} if none
131
     * @param sourceRoot  CWD-relative path of the scan root, or {@code null}
132
     *                    when {@code -emit-source-root} is not enabled
133
     */
134
    @SuppressWarnings("PMD.UseObjectForClearerAPI")
135
    public void emit(OutputMode mode, String fqcn, String method, int loc, String contentHash,
136
            List<String> tags, String displayName, AiMethodSuggestion suggestion, String sourceRoot) {
137 2 1. emit : removed conditional - replaced equality check with false → KILLED
2. emit : removed conditional - replaced equality check with true → KILLED
        if (mode == OutputMode.PLAIN) {
138 1 1. emit : removed call to org/egothor/methodatlas/emit/OutputEmitter::emitPlain → KILLED
            emitPlain(fqcn, method, loc, contentHash, tags, displayName, suggestion, sourceRoot);
139
        } else {
140 1 1. emit : removed call to org/egothor/methodatlas/emit/OutputEmitter::emitCsv → KILLED
            emitCsv(fqcn, method, loc, contentHash, tags, displayName, suggestion, sourceRoot);
141
        }
142
    }
143
144
    private void emitPlain(String fqcn, String method, int loc, String contentHash,
145
            List<String> tags, String displayName, AiMethodSuggestion suggestion, String sourceRoot) {
146 2 1. emitPlain : removed conditional - replaced equality check with false → KILLED
2. emitPlain : removed conditional - replaced equality check with true → KILLED
        String existingTags = tags.isEmpty() ? PLAIN_ABSENT : String.join(";", tags);
147
        StringBuilder line = new StringBuilder(fqcn)
148
                .append(", ").append(method)
149
                .append(", LOC=").append(loc)
150
                .append(", TAGS=").append(existingTags)
151 4 1. emitPlain : removed conditional - replaced equality check with true → SURVIVED
2. emitPlain : removed conditional - replaced equality check with false → SURVIVED
3. emitPlain : removed conditional - replaced equality check with true → KILLED
4. emitPlain : removed conditional - replaced equality check with false → KILLED
                .append(", DISPLAY=").append(displayName == null || displayName.isEmpty() ? PLAIN_ABSENT : displayName);
152
153 2 1. emitPlain : removed conditional - replaced equality check with false → KILLED
2. emitPlain : removed conditional - replaced equality check with true → KILLED
        if (emitSourceRoot) {
154 4 1. emitPlain : removed conditional - replaced equality check with true → KILLED
2. emitPlain : removed conditional - replaced equality check with false → KILLED
3. emitPlain : removed conditional - replaced equality check with false → KILLED
4. emitPlain : removed conditional - replaced equality check with true → KILLED
            line.append(", SRCROOT=").append(sourceRoot != null && !sourceRoot.isEmpty() ? sourceRoot : PLAIN_ABSENT);
155
        }
156
157 2 1. emitPlain : removed conditional - replaced equality check with true → KILLED
2. emitPlain : removed conditional - replaced equality check with false → KILLED
        if (contentHashEnabled) {
158 2 1. emitPlain : removed conditional - replaced equality check with true → SURVIVED
2. emitPlain : removed conditional - replaced equality check with false → KILLED
            line.append(", HASH=").append(contentHash != null ? contentHash : PLAIN_ABSENT);
159
        }
160
161 2 1. emitPlain : removed conditional - replaced equality check with true → KILLED
2. emitPlain : removed conditional - replaced equality check with false → KILLED
        if (aiEnabled) {
162 2 1. emitPlain : removed conditional - replaced equality check with true → SURVIVED
2. emitPlain : removed conditional - replaced equality check with false → KILLED
            TagAiDrift drift = driftDetect ? TagAiDrift.compute(tags, suggestion) : null;
163 1 1. emitPlain : removed call to org/egothor/methodatlas/emit/OutputEmitter::appendAiPlainFields → KILLED
            appendAiPlainFields(line, suggestion, drift);
164
        }
165
166 1 1. emitPlain : removed call to java/io/PrintWriter::println → KILLED
        out.println(line.toString());
167
    }
168
169
    @SuppressWarnings("PMD.NPathComplexity")
170
    private void appendAiPlainFields(StringBuilder line, AiMethodSuggestion suggestion, TagAiDrift drift) {
171 2 1. appendAiPlainFields : removed conditional - replaced equality check with true → KILLED
2. appendAiPlainFields : removed conditional - replaced equality check with false → KILLED
        String aiSecurity = suggestion == null ? PLAIN_ABSENT : Boolean.toString(suggestion.securityRelevant());
172 4 1. appendAiPlainFields : removed conditional - replaced equality check with false → KILLED
2. appendAiPlainFields : removed conditional - replaced equality check with true → KILLED
3. appendAiPlainFields : removed conditional - replaced equality check with false → KILLED
4. appendAiPlainFields : removed conditional - replaced equality check with true → KILLED
        String aiDisplayName = suggestion == null || suggestion.displayName() == null
173
                ? PLAIN_ABSENT : suggestion.displayName();
174 6 1. appendAiPlainFields : removed conditional - replaced equality check with true → SURVIVED
2. appendAiPlainFields : removed conditional - replaced equality check with false → KILLED
3. appendAiPlainFields : removed conditional - replaced equality check with true → KILLED
4. appendAiPlainFields : removed conditional - replaced equality check with false → KILLED
5. appendAiPlainFields : removed conditional - replaced equality check with true → KILLED
6. appendAiPlainFields : removed conditional - replaced equality check with false → KILLED
        String aiTags = suggestion == null || suggestion.tags() == null || suggestion.tags().isEmpty()
175
                ? PLAIN_ABSENT : String.join(";", suggestion.tags());
176 6 1. appendAiPlainFields : removed conditional - replaced equality check with true → SURVIVED
2. appendAiPlainFields : removed conditional - replaced equality check with false → KILLED
3. appendAiPlainFields : removed conditional - replaced equality check with true → KILLED
4. appendAiPlainFields : removed conditional - replaced equality check with true → KILLED
5. appendAiPlainFields : removed conditional - replaced equality check with false → KILLED
6. appendAiPlainFields : removed conditional - replaced equality check with false → KILLED
        String aiReason = suggestion == null || suggestion.reason() == null || suggestion.reason().isBlank()
177
                ? PLAIN_ABSENT : suggestion.reason();
178
179 2 1. appendAiPlainFields : removed conditional - replaced equality check with true → SURVIVED
2. appendAiPlainFields : removed conditional - replaced equality check with false → KILLED
        String aiInteractionScore = suggestion == null ? PLAIN_ABSENT
180
                : String.format("%.1f", suggestion.interactionScore());
181
182
        line.append(", AI_SECURITY=").append(aiSecurity)
183
                .append(", AI_DISPLAY=").append(aiDisplayName)
184
                .append(", AI_TAGS=").append(aiTags)
185
                .append(", AI_REASON=").append(aiReason)
186
                .append(", AI_INTERACTION_SCORE=").append(aiInteractionScore);
187
188 2 1. appendAiPlainFields : removed conditional - replaced equality check with true → SURVIVED
2. appendAiPlainFields : removed conditional - replaced equality check with false → KILLED
        if (confidenceEnabled) {
189 2 1. appendAiPlainFields : removed conditional - replaced equality check with false → SURVIVED
2. appendAiPlainFields : removed conditional - replaced equality check with true → KILLED
            String aiConfidence = suggestion == null ? PLAIN_ABSENT
190
                    : String.format("%.1f", suggestion.confidence());
191
            line.append(", AI_CONFIDENCE=").append(aiConfidence);
192
        }
193 2 1. appendAiPlainFields : removed conditional - replaced equality check with false → KILLED
2. appendAiPlainFields : removed conditional - replaced equality check with true → KILLED
        if (driftDetect) {
194 2 1. appendAiPlainFields : removed conditional - replaced equality check with true → SURVIVED
2. appendAiPlainFields : removed conditional - replaced equality check with false → KILLED
            line.append(", TAG_AI_DRIFT=").append(drift != null ? drift.toValue() : PLAIN_ABSENT);
195
        }
196
    }
197
198
    private void emitCsv(String fqcn, String method, int loc, String contentHash,
199
            List<String> tags, String displayName, AiMethodSuggestion suggestion, String sourceRoot) {
200 2 1. emitCsv : removed conditional - replaced equality check with false → SURVIVED
2. emitCsv : removed conditional - replaced equality check with true → KILLED
        String existingTags = tags.isEmpty() ? CSV_ABSENT : String.join(";", tags);
201
        StringBuilder line = new StringBuilder(csvEscape(fqcn))
202
                .append(',').append(csvEscape(method))
203
                .append(',').append(loc)
204
                .append(',').append(csvEscape(existingTags))
205 2 1. emitCsv : removed conditional - replaced equality check with true → SURVIVED
2. emitCsv : removed conditional - replaced equality check with false → SURVIVED
                .append(',').append(csvEscape(displayName != null ? displayName : CSV_ABSENT));
206
207 2 1. emitCsv : removed conditional - replaced equality check with false → KILLED
2. emitCsv : removed conditional - replaced equality check with true → KILLED
        if (emitSourceRoot) {
208 2 1. emitCsv : removed conditional - replaced equality check with true → SURVIVED
2. emitCsv : removed conditional - replaced equality check with false → KILLED
            line.append(',').append(csvEscape(sourceRoot != null ? sourceRoot : CSV_ABSENT));
209
        }
210
211 2 1. emitCsv : removed conditional - replaced equality check with true → KILLED
2. emitCsv : removed conditional - replaced equality check with false → KILLED
        if (contentHashEnabled) {
212 2 1. emitCsv : removed conditional - replaced equality check with true → SURVIVED
2. emitCsv : removed conditional - replaced equality check with false → KILLED
            line.append(',').append(contentHash != null ? contentHash : CSV_ABSENT);
213
        }
214
215 2 1. emitCsv : removed conditional - replaced equality check with false → KILLED
2. emitCsv : removed conditional - replaced equality check with true → KILLED
        if (aiEnabled) {
216 2 1. emitCsv : removed conditional - replaced equality check with true → SURVIVED
2. emitCsv : removed conditional - replaced equality check with false → KILLED
            TagAiDrift drift = driftDetect ? TagAiDrift.compute(tags, suggestion) : null;
217 1 1. emitCsv : removed call to org/egothor/methodatlas/emit/OutputEmitter::appendAiCsvFields → KILLED
            appendAiCsvFields(line, suggestion, drift);
218
        }
219
220 1 1. emitCsv : removed call to java/io/PrintWriter::println → KILLED
        out.println(line.toString());
221
    }
222
223
    @SuppressWarnings("PMD.NPathComplexity")
224
    private void appendAiCsvFields(StringBuilder line, AiMethodSuggestion suggestion, TagAiDrift drift) {
225 2 1. appendAiCsvFields : removed conditional - replaced equality check with true → KILLED
2. appendAiCsvFields : removed conditional - replaced equality check with false → KILLED
        String aiSecurity = suggestion == null ? CSV_ABSENT : Boolean.toString(suggestion.securityRelevant());
226 4 1. appendAiCsvFields : removed conditional - replaced equality check with false → SURVIVED
2. appendAiCsvFields : removed conditional - replaced equality check with true → KILLED
3. appendAiCsvFields : removed conditional - replaced equality check with false → KILLED
4. appendAiCsvFields : removed conditional - replaced equality check with true → KILLED
        String aiDisplayName = suggestion == null || suggestion.displayName() == null
227
                ? CSV_ABSENT : suggestion.displayName();
228 4 1. appendAiCsvFields : removed conditional - replaced equality check with false → SURVIVED
2. appendAiCsvFields : removed conditional - replaced equality check with true → KILLED
3. appendAiCsvFields : removed conditional - replaced equality check with true → KILLED
4. appendAiCsvFields : removed conditional - replaced equality check with false → KILLED
        String aiTags = suggestion == null || suggestion.tags() == null
229
                ? CSV_ABSENT : String.join(";", suggestion.tags());
230 4 1. appendAiCsvFields : removed conditional - replaced equality check with false → SURVIVED
2. appendAiCsvFields : removed conditional - replaced equality check with true → KILLED
3. appendAiCsvFields : removed conditional - replaced equality check with true → KILLED
4. appendAiCsvFields : removed conditional - replaced equality check with false → KILLED
        String aiReason = suggestion == null || suggestion.reason() == null
231
                ? CSV_ABSENT : suggestion.reason();
232
233 2 1. appendAiCsvFields : removed conditional - replaced equality check with false → KILLED
2. appendAiCsvFields : removed conditional - replaced equality check with true → KILLED
        String aiInteractionScore = suggestion == null ? CSV_ABSENT
234
                : String.format("%.1f", suggestion.interactionScore());
235
236
        line.append(',').append(csvEscape(aiSecurity))
237
                .append(',').append(csvEscape(aiDisplayName))
238
                .append(',').append(csvEscape(aiTags))
239
                .append(',').append(csvEscape(aiReason))
240
                .append(',').append(csvEscape(aiInteractionScore));
241
242 2 1. appendAiCsvFields : removed conditional - replaced equality check with false → KILLED
2. appendAiCsvFields : removed conditional - replaced equality check with true → KILLED
        if (confidenceEnabled) {
243 2 1. appendAiCsvFields : removed conditional - replaced equality check with false → SURVIVED
2. appendAiCsvFields : removed conditional - replaced equality check with true → KILLED
            String aiConfidence = suggestion == null ? CSV_ABSENT
244
                    : String.format("%.1f", suggestion.confidence());
245
            line.append(',').append(csvEscape(aiConfidence));
246
        }
247 2 1. appendAiCsvFields : removed conditional - replaced equality check with false → KILLED
2. appendAiCsvFields : removed conditional - replaced equality check with true → KILLED
        if (driftDetect) {
248 2 1. appendAiCsvFields : removed conditional - replaced equality check with false → KILLED
2. appendAiCsvFields : removed conditional - replaced equality check with true → KILLED
            line.append(',').append(drift != null ? drift.toValue() : CSV_ABSENT);
249
        }
250
    }
251
252
    /**
253
     * Escapes a value for inclusion in a CSV field.
254
     *
255
     * <p>
256
     * If the value contains a comma, double quote, carriage return, or line
257
     * feed, it is wrapped in double quotes and embedded quotes are doubled. Values
258
     * that start with {@code =}, {@code +}, {@code -}, or {@code @} are also
259
     * quoted to prevent spreadsheet formula injection. A {@code null} input is
260
     * converted to an empty field.
261
     * </p>
262
     *
263
     * @param value value to escape; may be {@code null}
264
     * @return CSV-safe representation of {@code value}
265
     */
266
    public static String csvEscape(String value) {
267 2 1. csvEscape : removed conditional - replaced equality check with false → KILLED
2. csvEscape : removed conditional - replaced equality check with true → KILLED
        if (value == null) {
268
            return CSV_ABSENT;
269
        }
270
271 2 1. csvEscape : removed conditional - replaced equality check with true → KILLED
2. csvEscape : removed conditional - replaced equality check with false → KILLED
        boolean formulaPrefix = !value.isEmpty()
272 3 1. csvEscape : removed conditional - replaced comparison check with false → KILLED
2. csvEscape : removed conditional - replaced comparison check with true → KILLED
3. csvEscape : changed conditional boundary → KILLED
                && "=+-@".indexOf(value.charAt(0)) >= 0;
273
274 8 1. csvEscape : changed conditional boundary → SURVIVED
2. csvEscape : changed conditional boundary → KILLED
3. csvEscape : removed conditional - replaced equality check with false → KILLED
4. csvEscape : removed conditional - replaced equality check with true → KILLED
5. csvEscape : removed conditional - replaced comparison check with false → KILLED
6. csvEscape : removed conditional - replaced comparison check with true → KILLED
7. csvEscape : removed conditional - replaced comparison check with false → KILLED
8. csvEscape : removed conditional - replaced comparison check with true → KILLED
        boolean mustQuote = formulaPrefix || value.indexOf(',') >= 0 || value.indexOf('"') >= 0
275 6 1. csvEscape : changed conditional boundary → SURVIVED
2. csvEscape : changed conditional boundary → SURVIVED
3. csvEscape : removed conditional - replaced comparison check with true → KILLED
4. csvEscape : removed conditional - replaced comparison check with false → KILLED
5. csvEscape : removed conditional - replaced comparison check with true → KILLED
6. csvEscape : removed conditional - replaced comparison check with false → KILLED
                || value.indexOf('\n') >= 0 || value.indexOf('\r') >= 0;
276
277 2 1. csvEscape : removed conditional - replaced equality check with false → KILLED
2. csvEscape : removed conditional - replaced equality check with true → KILLED
        if (!mustQuote) {
278 1 1. csvEscape : replaced return value with "" for org/egothor/methodatlas/emit/OutputEmitter::csvEscape → KILLED
            return value;
279
        }
280
281 1 1. csvEscape : replaced return value with "" for org/egothor/methodatlas/emit/OutputEmitter::csvEscape → KILLED
        return "\"" + value.replace("\"", "\"\"") + "\"";
282
    }
283
}

Mutations

80

1.1
Location : emitMetadata
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emitMetadata_emitsThreeLinesInKeyValueFormat()]
removed call to java/io/PrintWriter::println → KILLED

81

1.1
Location : emitMetadata
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emitMetadata_emitsThreeLinesInKeyValueFormat()]
removed call to java/io/PrintWriter::println → KILLED

82

1.1
Location : emitMetadata
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emitMetadata_emitsThreeLinesInKeyValueFormat()]
removed call to java/io/PrintWriter::println → KILLED

95

1.1
Location : emitCsvHeader
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emitCsvHeader_sarifMode_emitsNothing()]
removed conditional - replaced equality check with false → KILLED

2.2
Location : emitCsvHeader
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emitCsvHeader_csvMode_withContentHash_includesContentHashColumn()]
removed conditional - replaced equality check with true → KILLED

99

1.1
Location : emitCsvHeader
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emitCsvHeader_csvMode_withContentHash_includesContentHashColumn()]
removed conditional - replaced equality check with true → KILLED

2.2
Location : emitCsvHeader
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emitCsvHeader_withEmitSourceRoot_includesSourceRootColumn()]
removed conditional - replaced equality check with false → KILLED

102

1.1
Location : emitCsvHeader
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emitCsvHeader_csvMode_withContentHash_includesContentHashColumn()]
removed conditional - replaced equality check with false → KILLED

2.2
Location : emitCsvHeader
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emitCsvHeader_csvMode_noAiNoHash_emitsMinimalHeader()]
removed conditional - replaced equality check with true → KILLED

105

1.1
Location : emitCsvHeader
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emitCsvHeader_csvMode_withContentHash_includesContentHashColumn()]
removed conditional - replaced equality check with true → KILLED

2.2
Location : emitCsvHeader
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emitCsvHeader_csvMode_withDriftDetect_appendsTagAiDriftColumn()]
removed conditional - replaced equality check with false → KILLED

107

1.1
Location : emitCsvHeader
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emitCsvHeader_csvMode_aiEnabledNoConfidence_includesAiColumns()]
removed conditional - replaced equality check with true → KILLED

2.2
Location : emitCsvHeader
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emitCsvHeader_csvMode_aiAndConfidence_includesConfidenceColumn()]
removed conditional - replaced equality check with false → KILLED

110

1.1
Location : emitCsvHeader
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emitCsvHeader_csvMode_withoutDriftDetect_tagAiDriftAbsent()]
removed conditional - replaced equality check with true → KILLED

2.2
Location : emitCsvHeader
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emitCsvHeader_csvMode_withDriftDetect_appendsTagAiDriftColumn()]
removed conditional - replaced equality check with false → KILLED

114

1.1
Location : emitCsvHeader
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emitCsvHeader_csvMode_withContentHash_includesContentHashColumn()]
removed call to java/io/PrintWriter::println → KILLED

137

1.1
Location : emit
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_nullSourceRoot_withEmitSourceRoot_showsDash()]
removed conditional - replaced equality check with false → KILLED

2.2
Location : emit
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_nullSuggestionNoAiNoHashEmptyTags_correctLine()]
removed conditional - replaced equality check with true → KILLED

138

1.1
Location : emit
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_nullSourceRoot_withEmitSourceRoot_showsDash()]
removed call to org/egothor/methodatlas/emit/OutputEmitter::emitPlain → KILLED

140

1.1
Location : emit
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_nullSuggestionNoAiNoHashEmptyTags_correctLine()]
removed call to org/egothor/methodatlas/emit/OutputEmitter::emitCsv → KILLED

146

1.1
Location : emitPlain
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_nullSuggestionNoAiEmptyTags_tagsAsDash()]
removed conditional - replaced equality check with false → KILLED

2.2
Location : emitPlain
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_withTagsAiSuggestionAndConfidence_allFieldsPresent()]
removed conditional - replaced equality check with true → KILLED

151

1.1
Location : emitPlain
Killed by : none
removed conditional - replaced equality check with true → SURVIVED
Covering tests

2.2
Location : emitPlain
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_nullSourceRoot_withEmitSourceRoot_showsDash()]
removed conditional - replaced equality check with true → KILLED

3.3
Location : emitPlain
Killed by : none
removed conditional - replaced equality check with false → SURVIVED Covering tests

4.4
Location : emitPlain
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_nullSuggestionNoAiEmptyTags_tagsAsDash()]
removed conditional - replaced equality check with false → KILLED

153

1.1
Location : emitPlain
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_nullSourceRoot_withEmitSourceRoot_showsDash()]
removed conditional - replaced equality check with false → KILLED

2.2
Location : emitPlain
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_nullSuggestionNoAiEmptyTags_tagsAsDash()]
removed conditional - replaced equality check with true → KILLED

154

1.1
Location : emitPlain
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_withEmitSourceRootEmptyPath_srcRootShowsDash()]
removed conditional - replaced equality check with true → KILLED

2.2
Location : emitPlain
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_withEmitSourceRoot_srcRootTokenPresent()]
removed conditional - replaced equality check with false → KILLED

3.3
Location : emitPlain
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_withEmitSourceRoot_srcRootTokenPresent()]
removed conditional - replaced equality check with false → KILLED

4.4
Location : emitPlain
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_nullSourceRoot_withEmitSourceRoot_showsDash()]
removed conditional - replaced equality check with true → KILLED

157

1.1
Location : emitPlain
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_nullSuggestionNoAiEmptyTags_tagsAsDash()]
removed conditional - replaced equality check with true → KILLED

2.2
Location : emitPlain
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_nullSuggestionWithContentHash_hashFieldPresent()]
removed conditional - replaced equality check with false → KILLED

158

1.1
Location : emitPlain
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_nullSuggestionWithContentHash_hashFieldPresent()]
removed conditional - replaced equality check with false → KILLED

2.2
Location : emitPlain
Killed by : none
removed conditional - replaced equality check with true → SURVIVED
Covering tests

161

1.1
Location : emitPlain
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_nullSuggestionNoAiEmptyTags_tagsAsDash()]
removed conditional - replaced equality check with true → KILLED

2.2
Location : emitPlain
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_blankReason_reasonShowsDash()]
removed conditional - replaced equality check with false → KILLED

162

1.1
Location : emitPlain
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_driftNone_tokenPresent()]
removed conditional - replaced equality check with false → KILLED

2.2
Location : emitPlain
Killed by : none
removed conditional - replaced equality check with true → SURVIVED
Covering tests

163

1.1
Location : emitPlain
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_blankReason_reasonShowsDash()]
removed call to org/egothor/methodatlas/emit/OutputEmitter::appendAiPlainFields → KILLED

166

1.1
Location : emitPlain
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_nullSourceRoot_withEmitSourceRoot_showsDash()]
removed call to java/io/PrintWriter::println → KILLED

171

1.1
Location : appendAiPlainFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_withTagsAiSuggestionAndConfidence_allFieldsPresent()]
removed conditional - replaced equality check with true → KILLED

2.2
Location : appendAiPlainFields
Killed by : org.egothor.methodatlas.MethodAtlasAppAiTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppAiTest]/[method:plainMode_aiFailureForOneClass_continuesScanningAndFallsBackForThatClass(java.nio.file.Path)]
removed conditional - replaced equality check with false → KILLED

172

1.1
Location : appendAiPlainFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_withTagsAiSuggestionAndConfidence_allFieldsPresent()]
removed conditional - replaced equality check with false → KILLED

2.2
Location : appendAiPlainFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_withTagsAiSuggestionAndConfidence_allFieldsPresent()]
removed conditional - replaced equality check with true → KILLED

3.3
Location : appendAiPlainFields
Killed by : org.egothor.methodatlas.MethodAtlasAppAiTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppAiTest]/[method:plainMode_aiFailureForOneClass_continuesScanningAndFallsBackForThatClass(java.nio.file.Path)]
removed conditional - replaced equality check with false → KILLED

4.4
Location : appendAiPlainFields
Killed by : org.egothor.methodatlas.MethodAtlasAppAiTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppAiTest]/[method:plainMode_aiFailureForOneClass_continuesScanningAndFallsBackForThatClass(java.nio.file.Path)]
removed conditional - replaced equality check with true → KILLED

174

1.1
Location : appendAiPlainFields
Killed by : none
removed conditional - replaced equality check with true → SURVIVED
Covering tests

2.2
Location : appendAiPlainFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_withTagsAiSuggestionAndConfidence_allFieldsPresent()]
removed conditional - replaced equality check with false → KILLED

3.3
Location : appendAiPlainFields
Killed by : org.egothor.methodatlas.MethodAtlasAppAiTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppAiTest]/[method:plainMode_aiFailureForOneClass_continuesScanningAndFallsBackForThatClass(java.nio.file.Path)]
removed conditional - replaced equality check with true → KILLED

4.4
Location : appendAiPlainFields
Killed by : org.egothor.methodatlas.MethodAtlasAppAiTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppAiTest]/[method:plainMode_aiFailureForOneClass_continuesScanningAndFallsBackForThatClass(java.nio.file.Path)]
removed conditional - replaced equality check with false → KILLED

5.5
Location : appendAiPlainFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_withTagsAiSuggestionAndConfidence_allFieldsPresent()]
removed conditional - replaced equality check with true → KILLED

6.6
Location : appendAiPlainFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_withTagsAiSuggestionAndConfidence_allFieldsPresent()]
removed conditional - replaced equality check with false → KILLED

176

1.1
Location : appendAiPlainFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_withTagsAiSuggestionAndConfidence_allFieldsPresent()]
removed conditional - replaced equality check with false → KILLED

2.2
Location : appendAiPlainFields
Killed by : none
removed conditional - replaced equality check with true → SURVIVED
Covering tests

3.3
Location : appendAiPlainFields
Killed by : org.egothor.methodatlas.MethodAtlasAppAiTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppAiTest]/[method:plainMode_aiFailureForOneClass_continuesScanningAndFallsBackForThatClass(java.nio.file.Path)]
removed conditional - replaced equality check with true → KILLED

4.4
Location : appendAiPlainFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_withTagsAiSuggestionAndConfidence_allFieldsPresent()]
removed conditional - replaced equality check with true → KILLED

5.5
Location : appendAiPlainFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_blankReason_reasonShowsDash()]
removed conditional - replaced equality check with false → KILLED

6.6
Location : appendAiPlainFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_withTagsAiSuggestionAndConfidence_allFieldsPresent()]
removed conditional - replaced equality check with false → KILLED

179

1.1
Location : appendAiPlainFields
Killed by : none
removed conditional - replaced equality check with true → SURVIVED
Covering tests

2.2
Location : appendAiPlainFields
Killed by : org.egothor.methodatlas.MethodAtlasAppAiTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.MethodAtlasAppAiTest]/[method:plainMode_aiFailureForOneClass_continuesScanningAndFallsBackForThatClass(java.nio.file.Path)]
removed conditional - replaced equality check with false → KILLED

188

1.1
Location : appendAiPlainFields
Killed by : none
removed conditional - replaced equality check with true → SURVIVED
Covering tests

2.2
Location : appendAiPlainFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_withTagsAiSuggestionAndConfidence_allFieldsPresent()]
removed conditional - replaced equality check with false → KILLED

189

1.1
Location : appendAiPlainFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_withTagsAiSuggestionAndConfidence_allFieldsPresent()]
removed conditional - replaced equality check with true → KILLED

2.2
Location : appendAiPlainFields
Killed by : none
removed conditional - replaced equality check with false → SURVIVED
Covering tests

193

1.1
Location : appendAiPlainFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_driftNone_tokenPresent()]
removed conditional - replaced equality check with false → KILLED

2.2
Location : appendAiPlainFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_noDriftDetect_tokenAbsent()]
removed conditional - replaced equality check with true → KILLED

194

1.1
Location : appendAiPlainFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_plainMode_driftNone_tokenPresent()]
removed conditional - replaced equality check with false → KILLED

2.2
Location : appendAiPlainFields
Killed by : none
removed conditional - replaced equality check with true → SURVIVED
Covering tests

200

1.1
Location : emitCsv
Killed by : none
removed conditional - replaced equality check with false → SURVIVED
Covering tests

2.2
Location : emitCsv
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_withTags_tagsJoinedBySemicolon()]
removed conditional - replaced equality check with true → KILLED

205

1.1
Location : emitCsv
Killed by : none
removed conditional - replaced equality check with true → SURVIVED
Covering tests

2.2
Location : emitCsv
Killed by : none
removed conditional - replaced equality check with false → SURVIVED Covering tests

207

1.1
Location : emitCsv
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_withEmitSourceRoot_sourceRootValuePresent()]
removed conditional - replaced equality check with false → KILLED

2.2
Location : emitCsv
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_nullSuggestionNoAiNoHashEmptyTags_correctLine()]
removed conditional - replaced equality check with true → KILLED

208

1.1
Location : emitCsv
Killed by : none
removed conditional - replaced equality check with true → SURVIVED
Covering tests

2.2
Location : emitCsv
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_withEmitSourceRoot_sourceRootValuePresent()]
removed conditional - replaced equality check with false → KILLED

211

1.1
Location : emitCsv
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_nullSuggestionNoAiNoHashEmptyTags_correctLine()]
removed conditional - replaced equality check with true → KILLED

2.2
Location : emitCsv
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_withContentHash_hashColumnPresent()]
removed conditional - replaced equality check with false → KILLED

212

1.1
Location : emitCsv
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_withContentHash_hashColumnPresent()]
removed conditional - replaced equality check with false → KILLED

2.2
Location : emitCsv
Killed by : none
removed conditional - replaced equality check with true → SURVIVED
Covering tests

215

1.1
Location : emitCsv
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_nullSuggestionAiEnabled_allAiColumnsEmpty()]
removed conditional - replaced equality check with false → KILLED

2.2
Location : emitCsv
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_nullSuggestionNoAiNoHashEmptyTags_correctLine()]
removed conditional - replaced equality check with true → KILLED

216

1.1
Location : emitCsv
Killed by : none
removed conditional - replaced equality check with true → SURVIVED
Covering tests

2.2
Location : emitCsv
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_driftNone_whenBothAgreeSecurityRelevant()]
removed conditional - replaced equality check with false → KILLED

217

1.1
Location : emitCsv
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_nullSuggestionAiEnabled_allAiColumnsEmpty()]
removed call to org/egothor/methodatlas/emit/OutputEmitter::appendAiCsvFields → KILLED

220

1.1
Location : emitCsv
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_nullSuggestionNoAiNoHashEmptyTags_correctLine()]
removed call to java/io/PrintWriter::println → KILLED

225

1.1
Location : appendAiCsvFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_aiSuggestionNoConfidence_aiColumnsFilled()]
removed conditional - replaced equality check with true → KILLED

2.2
Location : appendAiCsvFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_driftEmpty_whenSuggestionNull()]
removed conditional - replaced equality check with false → KILLED

226

1.1
Location : appendAiCsvFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_aiSuggestionNoConfidence_aiColumnsFilled()]
removed conditional - replaced equality check with true → KILLED

2.2
Location : appendAiCsvFields
Killed by : none
removed conditional - replaced equality check with false → SURVIVED
Covering tests

3.3
Location : appendAiCsvFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_aiSuggestionNoConfidence_aiColumnsFilled()]
removed conditional - replaced equality check with false → KILLED

4.4
Location : appendAiCsvFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_driftEmpty_whenSuggestionNull()]
removed conditional - replaced equality check with true → KILLED

228

1.1
Location : appendAiCsvFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_driftEmpty_whenSuggestionNull()]
removed conditional - replaced equality check with true → KILLED

2.2
Location : appendAiCsvFields
Killed by : none
removed conditional - replaced equality check with false → SURVIVED
Covering tests

3.3
Location : appendAiCsvFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_nullReason_reasonFieldEmpty()]
removed conditional - replaced equality check with true → KILLED

4.4
Location : appendAiCsvFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_nullReason_reasonFieldEmpty()]
removed conditional - replaced equality check with false → KILLED

230

1.1
Location : appendAiCsvFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_aiSuggestionNoConfidence_aiColumnsFilled()]
removed conditional - replaced equality check with true → KILLED

2.2
Location : appendAiCsvFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_driftEmpty_whenSuggestionNull()]
removed conditional - replaced equality check with true → KILLED

3.3
Location : appendAiCsvFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_aiSuggestionNoConfidence_aiColumnsFilled()]
removed conditional - replaced equality check with false → KILLED

4.4
Location : appendAiCsvFields
Killed by : none
removed conditional - replaced equality check with false → SURVIVED
Covering tests

233

1.1
Location : appendAiCsvFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_driftEmpty_whenSuggestionNull()]
removed conditional - replaced equality check with false → KILLED

2.2
Location : appendAiCsvFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_aiSuggestionNoConfidence_aiColumnsFilled()]
removed conditional - replaced equality check with true → KILLED

242

1.1
Location : appendAiCsvFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_aiSuggestionWithConfidence_confidenceAppended()]
removed conditional - replaced equality check with false → KILLED

2.2
Location : appendAiCsvFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_nullSuggestionAiEnabled_allAiColumnsEmpty()]
removed conditional - replaced equality check with true → KILLED

243

1.1
Location : appendAiCsvFields
Killed by : none
removed conditional - replaced equality check with false → SURVIVED
Covering tests

2.2
Location : appendAiCsvFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_aiSuggestionWithConfidence_confidenceAppended()]
removed conditional - replaced equality check with true → KILLED

247

1.1
Location : appendAiCsvFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_driftNone_whenBothAgreeSecurityRelevant()]
removed conditional - replaced equality check with false → KILLED

2.2
Location : appendAiCsvFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_nullSuggestionAiEnabled_allAiColumnsEmpty()]
removed conditional - replaced equality check with true → KILLED

248

1.1
Location : appendAiCsvFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_driftAiOnly_whenAiSecurityButNoSourceTag()]
removed conditional - replaced equality check with false → KILLED

2.2
Location : appendAiCsvFields
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:emit_csvMode_driftEmpty_whenSuggestionNull()]
removed conditional - replaced equality check with true → KILLED

267

1.1
Location : csvEscape
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:csvEscape_null_returnsEmptyString()]
removed conditional - replaced equality check with false → KILLED

2.2
Location : csvEscape
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:csvEscape_withPlusPrefix_wrapsInQuotes()]
removed conditional - replaced equality check with true → KILLED

271

1.1
Location : csvEscape
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:csvEscape_emptyString_returnsEmptyString()]
removed conditional - replaced equality check with true → KILLED

2.2
Location : csvEscape
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:csvEscape_withPlusPrefix_wrapsInQuotes()]
removed conditional - replaced equality check with false → KILLED

272

1.1
Location : csvEscape
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:csvEscape_withPlusPrefix_wrapsInQuotes()]
removed conditional - replaced comparison check with false → KILLED

2.2
Location : csvEscape
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:csvEscape_noSpecialChars_returnsUnchanged()]
removed conditional - replaced comparison check with true → KILLED

3.3
Location : csvEscape
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:csvEscape_formulaPrefixOnly_wrapsEmptyBodyInQuotes()]
changed conditional boundary → KILLED

274

1.1
Location : csvEscape
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:csvEscape_singleQuoteOnly_escapedAndWrapped()]
changed conditional boundary → KILLED

2.2
Location : csvEscape
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:csvEscape_noSpecialChars_returnsUnchanged()]
removed conditional - replaced equality check with false → KILLED

3.3
Location : csvEscape
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:csvEscape_withPlusPrefix_wrapsInQuotes()]
removed conditional - replaced equality check with true → KILLED

4.4
Location : csvEscape
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:csvEscape_noSpecialChars_returnsUnchanged()]
removed conditional - replaced comparison check with false → KILLED

5.5
Location : csvEscape
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:csvEscape_withComma_wrapsInQuotes()]
removed conditional - replaced comparison check with true → KILLED

6.6
Location : csvEscape
Killed by : none
changed conditional boundary → SURVIVED
Covering tests

7.7
Location : csvEscape
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:csvEscape_noSpecialChars_returnsUnchanged()]
removed conditional - replaced comparison check with false → KILLED

8.8
Location : csvEscape
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:csvEscape_singleQuoteOnly_escapedAndWrapped()]
removed conditional - replaced comparison check with true → KILLED

275

1.1
Location : csvEscape
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:csvEscape_noSpecialChars_returnsUnchanged()]
removed conditional - replaced comparison check with true → KILLED

2.2
Location : csvEscape
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:csvEscape_noSpecialChars_returnsUnchanged()]
removed conditional - replaced comparison check with false → KILLED

3.3
Location : csvEscape
Killed by : none
changed conditional boundary → SURVIVED
Covering tests

4.4
Location : csvEscape
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:csvEscape_withNewline_wrapsInQuotes()]
removed conditional - replaced comparison check with true → KILLED

5.5
Location : csvEscape
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:csvEscape_withCarriageReturn_wrapsInQuotes()]
removed conditional - replaced comparison check with false → KILLED

6.6
Location : csvEscape
Killed by : none
changed conditional boundary → SURVIVED Covering tests

277

1.1
Location : csvEscape
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:csvEscape_noSpecialChars_returnsUnchanged()]
removed conditional - replaced equality check with false → KILLED

2.2
Location : csvEscape
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:csvEscape_withPlusPrefix_wrapsInQuotes()]
removed conditional - replaced equality check with true → KILLED

278

1.1
Location : csvEscape
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:csvEscape_noSpecialChars_returnsUnchanged()]
replaced return value with "" for org/egothor/methodatlas/emit/OutputEmitter::csvEscape → KILLED

281

1.1
Location : csvEscape
Killed by : org.egothor.methodatlas.OutputEmitterTest.[engine:junit-jupiter]/[class:org.egothor.methodatlas.OutputEmitterTest]/[method:csvEscape_formulaPrefixOnly_wrapsEmptyBodyInQuotes()]
replaced return value with "" for org/egothor/methodatlas/emit/OutputEmitter::csvEscape → KILLED

Active mutators

Tests examined


Report generated by PIT 1.22.1