-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathspotbugs-exclude.xml
More file actions
161 lines (139 loc) · 6 KB
/
spotbugs-exclude.xml
File metadata and controls
161 lines (139 loc) · 6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
<?xml version="1.0" encoding="UTF-8"?>
<FindBugsFilter>
<!-- Builder patterns store mutable objects intentionally;
defensive copies are made in build() -->
<Match>
<Class name="~.*\$Builder"/>
<Bug pattern="EI_EXPOSE_REP2"/>
</Match>
<!-- CaseResult.testCase is an intentionally mutable reference
(AgentTestCase has mutable capture-time fields by design) -->
<Match>
<Class name="org.byteveda.agenteval.core.eval.CaseResult"/>
<Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2"/>
</Match>
<!-- Abstract base class constructors that validate arguments intentionally
throw; all concrete subclasses are final -->
<Match>
<Class name="org.byteveda.agenteval.metrics.llm.LLMJudgeMetric"/>
<Bug pattern="CT_CONSTRUCTOR_THROW"/>
</Match>
<Match>
<Class name="org.byteveda.agenteval.metrics.conversation.LLMConversationMetric"/>
<Bug pattern="CT_CONSTRUCTOR_THROW"/>
</Match>
<!-- EvalDataset fields are defensively copied via List.copyOf/Map.copyOf -->
<Match>
<Class name="org.byteveda.agenteval.datasets.EvalDataset"/>
<Bug pattern="EI_EXPOSE_REP"/>
</Match>
<!-- ObjectMapper is intentionally shared (thread-safe) -->
<Match>
<Class name="~org\.byteveda\.agenteval\.datasets\.json\.Json.*"/>
<Bug pattern="EI_EXPOSE_REP2"/>
</Match>
<Match>
<Class name="~org\.byteveda\.agenteval\.datasets\.jsonl\.Jsonl.*"/>
<Bug pattern="EI_EXPOSE_REP2"/>
</Match>
<Match>
<Class name="~org\.byteveda\.agenteval\.datasets\.yaml\.Yaml.*"/>
<Bug pattern="EI_EXPOSE_REP2"/>
</Match>
<!-- ConsoleReporter stores PrintStream for injection (test support) -->
<Match>
<Class name="org.byteveda.agenteval.reporting.ConsoleReporter"/>
<Bug pattern="EI_EXPOSE_REP2"/>
</Match>
<!-- AgentTestCaseAssert intentionally exposes the mutable test case -->
<Match>
<Class name="org.byteveda.agenteval.junit5.assertion.AgentTestCaseAssert"/>
<Bug pattern="EI_EXPOSE_REP"/>
</Match>
<!-- YamlConfigModel is a Jackson deserialization POJO — mutable by design -->
<Match>
<Class name="~org\.byteveda\.agenteval\.core\.config\.YamlConfigModel.*"/>
<Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2"/>
</Match>
<!-- AgentEvalConfigLoader reads YAML files which are always UTF-8 -->
<Match>
<Class name="org.byteveda.agenteval.core.config.AgentEvalConfigLoader"/>
<Bug pattern="DM_DEFAULT_ENCODING"/>
</Match>
<!-- Regression records use defensive copies where possible;
records expose their components by design -->
<Match>
<Class name="~org\.byteveda\.agenteval\.reporting\.regression\..*"/>
<Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2,WMI_WRONG_MAP_ITERATOR"/>
</Match>
<!-- HtmlReportConfig stores Path (immutable by design) -->
<Match>
<Class name="org.byteveda.agenteval.reporting.HtmlReportConfig"/>
<Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2"/>
</Match>
<!-- Red team records expose their list components by design -->
<Match>
<Class name="~org\.byteveda\.agenteval\.redteam\..*"/>
<Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2"/>
</Match>
<!-- MCP capture stores thread-safe synchronized list -->
<Match>
<Class name="org.byteveda.agenteval.mcp.McpCapture"/>
<Bug pattern="EI_EXPOSE_REP"/>
</Match>
<!-- Multi-judge records use defensive copies; ThreadLocal is intentional -->
<Match>
<Class name="~org\.byteveda\.agenteval\.judge\.multi\..*"/>
<Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2"/>
</Match>
<!-- Dataset version records expose immutable components by design -->
<Match>
<Class name="~org\.byteveda\.agenteval\.datasets\.version\..*"/>
<Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2"/>
</Match>
<!-- MarkdownReporter intentionally uses \n (not %n) for Markdown output -->
<Match>
<Class name="org.byteveda.agenteval.github.MarkdownReporter"/>
<Bug pattern="VA_FORMAT_STRING_USES_NEWLINE"/>
</Match>
<!-- MarkdownConfig stores Path (immutable by design) -->
<Match>
<Class name="org.byteveda.agenteval.github.MarkdownConfig"/>
<Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2"/>
</Match>
<!-- GitHub Actions module — ObjectMapper is thread-safe, records expose by design -->
<Match>
<Class name="~org\.byteveda\.agenteval\.github\..*"/>
<Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2"/>
</Match>
<!-- Chaos engineering records expose their components by design -->
<Match>
<Class name="~org\.byteveda\.agenteval\.chaos\..*"/>
<Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2"/>
</Match>
<!-- Contract testing — AgentTestCase is mutable by design (capture-time fields);
CompositeContract validates before assigning;
ContractDefinition is a Jackson POJO -->
<Match>
<Class name="~org\.byteveda\.agenteval\.contracts\..*"/>
<Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2,CT_CONSTRUCTOR_THROW,UUF_UNUSED_PUBLIC_OR_PROTECTED_FIELD"/>
</Match>
<!-- Benchmark classes store config/metrics intentionally;
BenchmarkResult exposes variant results by design -->
<Match>
<Class name="~org\.byteveda\.agenteval\.core\.benchmark\..*"/>
<Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2"/>
</Match>
<!-- BenchmarkReporter stores PrintStream for injection (test support) -->
<Match>
<Class name="org.byteveda.agenteval.reporting.benchmark.BenchmarkReporter"/>
<Bug pattern="EI_EXPOSE_REP2"/>
</Match>
<!-- Snapshot records expose their components by design;
SnapshotStore shares ObjectMapper (thread-safe);
SnapshotReporter stores config/store references intentionally -->
<Match>
<Class name="~org\.byteveda\.agenteval\.reporting\.snapshot\..*"/>
<Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2"/>
</Match>
</FindBugsFilter>