-
Notifications
You must be signed in to change notification settings - Fork 14.3k
/
Copy pathspotbugs-exclude.xml
553 lines (483 loc) · 24 KB
/
spotbugs-exclude.xml
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
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- Spotbugs filtering.
Spotbugs is a static code analysis tool run as part of the "check" phase of the build.
This file dictates which categories of bugs and individual false positives that we suppress.
For a detailed description of spotbugs bug categories, see https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html
-->
<FindBugsFilter>
<Match>
<!-- Disable warnings about mutable objects and the use of public fields.
EI_EXPOSE_REP: May expose internal representation by returning reference to mutable object
EI_EXPOSE_REP2: May expose internal representation by incorporating reference to mutable object
MS_PKGPROTECT: Field should be package protected
MS_EXPOSE_REP: Public static method may expose internal representation by returning array
EI_EXPOSE_STATIC_REP2: May expose internal static state by storing a mutable object into a static field -->
<Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2,MS_PKGPROTECT,EI_EXPOSE_STATIC_REP2,MS_EXPOSE_REP"/>
</Match>
<Match>
<!-- Disable warnings about System.exit, until we decide to stop using it.
DM_EXIT: Method invokes System.exit -->
<Bug pattern="DM_EXIT"/>
</Match>
<Match>
<!-- Disable warnings about creating Classloaders inside doPrivilege.
DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED: Classloaders should only be created inside doPrivileged block
The security manager has been deprecated for removal as of JDK 17, see https://openjdk.org/jeps/411 -->
<Bug pattern="DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED"/>
</Match>
<Match>
<!-- Disable warnings about the lack of equals() when compareTo() is implemented.
EQ_COMPARETO_USE_OBJECT_EQUALS: This class defines a compareTo method but no equals() method -->
<Bug pattern="EQ_COMPARETO_USE_OBJECT_EQUALS"/>
</Match>
<Match>
<!-- Disable warnings about constructors that throw exceptions.
CT_CONSTRUCTOR_THROW: Be wary of letting constructors throw exceptions -->
<Bug pattern="CT_CONSTRUCTOR_THROW"/>
</Match>
<Match>
<!-- Disable warnings about identifiers that conflict with standard library identifiers.
PI_DO_NOT_REUSE_PUBLIC_IDENTIFIERS_CLASS_NAMES: Do not reuse public identifiers from JSL as class name
PI_DO_NOT_REUSE_PUBLIC_IDENTIFIERS_FIELD_NAMES: Do not reuse public identifiers from JSL as field name
PI_DO_NOT_REUSE_PUBLIC_IDENTIFIERS_METHOD_NAMES: Do not reuse public identifiers from JSL as method name
-->
<Bug pattern="PI_DO_NOT_REUSE_PUBLIC_IDENTIFIERS_CLASS_NAMES,PI_DO_NOT_REUSE_PUBLIC_IDENTIFIERS_FIELD_NAMES,PI_DO_NOT_REUSE_PUBLIC_IDENTIFIERS_METHOD_NAMES"/>
</Match>
<Match>
<!-- Spotbugs tends to work a little bit better with Java than with Scala. We suppress
some categories of bug reports when using Scala, since spotbugs generates huge
numbers of false positives in some of these categories when examining Scala code.
NP_LOAD_OF_KNOWN_NULL_VALUE: The variable referenced at this point is known to be null
due to an earlier check against null.
NP_NULL_PARAM_DEREF: Method call passes null for non-null parameter.
NP_NULL_ON_SOME_PATH: Possible null pointer dereference
SE_BAD_FIELD: Non-transient non-serializable instance field in serializable class.
DM_STRING_CTOR: Method invokes inefficient new String(String) constructor.
DM_NEW_FOR_GETCLASS: Method allocates an object, only to get the class object.
ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD: Write to static field from instance method.
DM_NUMBER_CTOR: Method invokes inefficient Number constructor; use static valueOf instead.
RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE: Nullcheck of value previously dereferenced.
RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE: Redundant nullcheck of value known to be non-null.
RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE: Redundant nullcheck of value known to be null.
RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT: Return value of method without side effect is ignored.
NM_CLASS_NAMING_CONVENTION: Class names should start with an upper case letter.
NM_METHOD_NAMING_CONVENTION: Method names should start with a lower case letter.
EC_NULL_ARG: Call to equals(null)
NP_ALWAYS_NULL: Null pointer dereference
MS_CANNOT_BE_FINAL: Field isn't final and can't be protected from malicious code
IC_INIT_CIRCULARITY: Initialization circularity
SE_NO_SUITABLE_CONSTRUCTOR: Class is Serializable but its superclass doesn't define a void constructor
PA_PUBLIC_MUTABLE_OBJECT_ATTRIBUTE: Mutable object-type field is public -->
<Source name="~.*\.scala" />
<Or>
<Bug pattern="NP_LOAD_OF_KNOWN_NULL_VALUE"/>
<Bug pattern="NP_NULL_ON_SOME_PATH"/>
<Bug pattern="NP_NULL_PARAM_DEREF"/>
<Bug pattern="SE_BAD_FIELD"/>
<Bug pattern="DM_STRING_CTOR"/>
<Bug pattern="DM_NEW_FOR_GETCLASS"/>
<Bug pattern="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD"/>
<Bug pattern="DM_NUMBER_CTOR"/>
<Bug pattern="RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE"/>
<Bug pattern="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE"/>
<Bug pattern="RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE"/>
<Bug pattern="RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT"/>
<Bug pattern="NM_CLASS_NAMING_CONVENTION"/>
<Bug pattern="NM_METHOD_NAMING_CONVENTION"/>
<Bug pattern="EC_NULL_ARG"/>
<Bug pattern="NP_ALWAYS_NULL"/>
<Bug pattern="MS_CANNOT_BE_FINAL"/>
<Bug pattern="IC_INIT_CIRCULARITY"/>
<Bug pattern="SE_NO_SUITABLE_CONSTRUCTOR"/>
<Bug pattern="DMI_RANDOM_USED_ONLY_ONCE"/>
<Bug pattern="SSD_DO_NOT_USE_INSTANCE_LOCK_ON_SHARED_STATIC_DATA"/>
<Bug pattern="PA_PUBLIC_MUTABLE_OBJECT_ATTRIBUTE"/>
</Or>
</Match>
<Match>
<!-- disabled due to too many false positives
RV_EXCEPTION_NOT_THROWN: Exception created and dropped rather than thrown -->
<Bug pattern="RV_EXCEPTION_NOT_THROWN"/>
</Match>
<!-- false positive in Java 11, related to https://github.com/spotbugs/spotbugs/issues/756 but more complex -->
<Match>
<Class name="org.apache.kafka.common.compress.Lz4BlockOutputStream"/>
<Bug pattern="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE"/>
</Match>
<!-- false positive, see https://github.com/spotbugs/spotbugs/issues/1001 -->
<Match>
<Class name="org.apache.kafka.common.internals.KafkaFutureImpl"/>
<Bug pattern="NP_NONNULL_PARAM_VIOLATION"/>
</Match>
<Match>
<!-- Suppression for the equals() for extension methods. -->
<Class name="kafka.api.package$ElectLeadersRequestOps"/>
<Bug pattern="EQ_UNUSUAL"/>
</Match>
<Match>
<!-- Suppression for the equals() for extension methods. -->
<Class name="kafka.utils.Implicits$MapExtensionMethods"/>
<Bug pattern="EQ_UNUSUAL"/>
</Match>
<Match>
<!-- A spurious null check after inlining by the scalac optimizer confuses spotBugs -->
<Class name="kafka.log.Log"/>
<Bug pattern="NP_NULL_ON_SOME_PATH_EXCEPTION"/>
</Match>
<Match>
<!-- Scala doesn't have checked exceptions so one cannot catch RuntimeException and rely
on the compiler to fail if the code is changed to call a method that throws Exception.
Given that, this bug pattern doesn't make sense for Scala code. -->
<Or>
<Class name="kafka.log.Log"/>
</Or>
<Bug pattern="REC_CATCH_EXCEPTION"/>
</Match>
<Match>
<Or>
<!-- Unboxing to Int to make scalac happy makes spotBugs unhappy -->
<Class name="kafka.tools.ConsoleConsumer$ConsumerConfig"/>
<!-- Java's own Map#compute forces this pattern on us -->
<Class name="org.apache.kafka.streams.query.Position"/>
</Or>
<Bug pattern="BX_UNBOXING_IMMEDIATELY_REBOXED"/>
</Match>
<Match>
<!-- offsets is a lazy val and it confuses spotBugs with its locking scheme -->
<Class name="kafka.server.checkpoints.LazyOffsetCheckpointMap"/>
<Bug pattern="IS2_INCONSISTENT_SYNC"/>
</Match>
<Match>
<!-- Keeping this class for compatibility. It's deprecated and will be removed in the next major release -->
<Source name="MessageFormatter.scala"/>
<Package name="kafka.common"/>
<Bug pattern="NM_SAME_SIMPLE_NAME_AS_INTERFACE"/>
</Match>
<Match>
<!-- Suppress a warning about some static initializers in Schema using instances of a
subclass. -->
<Or>
<Class name="org.apache.kafka.connect.data.Schema"/>
<Class name="org.apache.kafka.connect.data.SchemaBuilder"/>
</Or>
<Bug pattern="IC_SUPERCLASS_USES_SUBCLASS_DURING_INITIALIZATION"/>
</Match>
<Match>
<!-- Suppress warnings about unread protected fields in some public classes.
Although these are not read in Kafka Connect code, they are part of the API. -->
<Or>
<Class name="org.apache.kafka.connect.connector.Connector"/>
<Class name="org.apache.kafka.connect.sink.SinkTask"/>
<Class name="org.apache.kafka.connect.source.SourceTask"/>
</Or>
<Bug pattern="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"/>
</Match>
<Match>
<!-- Suppress warnings about converting an integer number of
milliseconds to a java.util.Date object. We do this intentionally in
org.apache.kafka.connect.data.Time. -->
<Class name="org.apache.kafka.connect.data.Time"/>
<Method name="toLogical"/>
<Bug pattern="ICAST_INT_2_LONG_AS_INSTANT"/>
</Match>
<Match>
<!-- Suppress warning about missing reflexive and symmetric properties of equal.
This equals method is used as a value filter for Jackson. -->
<Class name="org.apache.kafka.connect.runtime.rest.entities.PluginInfo$NoVersionFilter"/>
<Method name="equals"/>
<Bug pattern="EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS"/>
</Match>
<Match>
<!-- Suppress aggressive and unnecessary warnings about switch fallthrough -->
<Class name="org.apache.kafka.connect.runtime.rest.resources.LoggingResource" />
<Method name="setLevel" />
<Bug pattern="SF_SWITCH_FALLTHROUGH" />
</Match>
<Match>
<!-- Converting to an optional boolean intentionally returns null on null input. -->
<Class name="org.apache.kafka.connect.data.Values"/>
<Method name="convertToBoolean"/>
<Bug pattern="NP_BOOLEAN_RETURN_NULL"/>
</Match>
<Match>
<!-- Suppress some minor warnings about machine-generated code for benchmarking. -->
<Package name="~org\.apache\.kafka\.jmh\..*\.jmh_generated"/>
</Match>
<Match>
<!-- JMH benchmarks often have fields that are modified by the framework.
SS_SHOULD_BE_STATIC: Unread field: should this field be static? -->
<Package name="~org\.apache\.kafka\.jmh\..*"/>
<Bug pattern="SS_SHOULD_BE_STATIC"/>
</Match>
<Match>
<!-- Suppress warnings about generated schema arrays. -->
<Or>
<Package name="org.apache.kafka.common.message"/>
<Package name="org.apache.kafka.streams.internals.generated"/>
<Package name="kafka.internals.generated"/>
</Or>
<Bug pattern="MS_MUTABLE_ARRAY"/>
</Match>
<Match>
<Class name="org.apache.kafka.streams.processor.internals.TopologyMetadata"/>
<Method name="offsetResetStrategy"/>
<Bug pattern="NP_OPTIONAL_RETURN_NULL"/>
</Match>
<Match>
<!-- Suppress warnings about ignoring the return value of await.
This is done intentionally because we use other clues to determine
if the wait was cut short. -->
<Class name="org.apache.kafka.connect.runtime.AbstractWorkerSourceTask"/>
<Method name="execute"/>
<Bug pattern="RV_RETURN_VALUE_IGNORED"/>
</Match>
<Match>
<!-- Suppress some warnings about intentional switch statement fallthrough. -->
<Class name="org.apache.kafka.connect.runtime.WorkerConnector"/>
<Or>
<Method name="doStart"/>
</Or>
<Bug pattern="SF_SWITCH_FALLTHROUGH"/>
</Match>
<Match>
<!-- Suppress a warning about intentional switch statement fallthrough. -->
<Class name="org.apache.kafka.common.security.authenticator.SaslClientAuthenticator"/>
<Method name="authenticate"/>
<Bug pattern="SF_SWITCH_FALLTHROUGH"/>
</Match>
<Match>
<!-- False positive - the volatile read is guarded by a lock. -->
<Class name="org.apache.kafka.storage.internals.log.AbstractIndex"/>
<Method name="incrementEntries"/>
<Bug pattern="VO_VOLATILE_INCREMENT"/>
</Match>
<Match>
<!-- False positive - `ScheduledThreadPoolExecutor.getQueue()` specifies via its javadoc that its elements are of type `ScheduledFuture` -->
<Class name="org.apache.kafka.server.util.KafkaScheduler"/>
<Method name="taskRunning"/>
<Bug pattern="GC_UNRELATED_TYPES"/>
</Match>
<Match>
<!-- Suppress a warning about intentional missing default cases and fallthroughs. -->
<Class name="org.apache.kafka.common.utils.Utils"/>
<Method name="murmur2"/>
<Or>
<Bug pattern="SF_SWITCH_NO_DEFAULT"/>
<Bug pattern="SF_SWITCH_FALLTHROUGH"/>
</Or>
</Match>
<Match>
<!-- Suppress a warning about intentional missing default cases and fallthroughs. -->
<Class name="org.apache.kafka.streams.state.internals.Murmur3"/>
<Or>
<Bug pattern="SF_SWITCH_NO_DEFAULT"/>
<Bug pattern="SF_SWITCH_FALLTHROUGH"/>
</Or>
</Match>
<Match>
<!-- Suppress a warning about intentional missing default cases and fallthroughs. -->
<Class name="org.apache.kafka.streams.state.internals.Murmur3$IncrementalHash32"/>
<Or>
<Bug pattern="SF_SWITCH_NO_DEFAULT"/>
<Bug pattern="SF_SWITCH_FALLTHROUGH"/>
</Or>
</Match>
<Match>
<!-- Public mutable fields are intentional in some Streams classes.
PA_PUBLIC_PRIMITIVE_ATTRIBUTE: Primitive field is public -->
<Or>
<Class name="org.apache.kafka.streams.kstream.Materialized"/>
<Class name="org.apache.kafka.streams.state.internals.LeftOrRightValueDeserializer"/>
</Or>
<Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
</Match>
<Match>
<!-- Suppress a spurious warning about locks not being released on all paths.
This happens because there is an 'if' statement that checks if we have the lock before
releasing it. -->
<Class name="org.apache.kafka.clients.producer.internals.BufferPool"/>
<Method name="allocate"/>
<Bug pattern="UL_UNRELEASED_LOCK"/>
</Match>
<Match>
<!-- Suppress warnings about synchronizing on the UnsentRequests
ConcurrentHashMap. This is done deliberately. -->
<Package name="org.apache.kafka.clients.consumer.internals"/>
<Source name="ConsumerNetworkClient.java"/>
<Bug pattern="JLM_JSR166_UTILCONCURRENT_MONITORENTER"/>
</Match>
<Match>
<!-- Suppress inconsistent synchronization warnings about
AbstractCoordinator#coordinator. See KAFKA-4992 for details.-->
<Class name="org.apache.kafka.clients.consumer.internals.AbstractCoordinator"/>
<Bug pattern="IS2_INCONSISTENT_SYNC"/>
</Match>
<Match>
<!-- Suppress a warning about ignoring the return value of await.
This is done intentionally because we use other clues to determine
if the wait was cut short. -->
<Package name="org.apache.kafka.queue"/>
<Source name="KafkaEventQueue.java"/>
<Bug pattern="RV_RETURN_VALUE_IGNORED,RV_RETURN_VALUE_IGNORED_BAD_PRACTICE"/>
</Match>
<Match>
<!-- Suppress warnings about implementing compareTo but not equals. -->
<Class name="org.apache.kafka.streams.processor.internals.Stamped"/>
<Bug pattern="EQ_COMPARETO_USE_OBJECT_EQUALS"/>
</Match>
<Match>
<!-- Suppress warning about applicationID that gets initialized before
any other threads are created, but is used in synchronized and
unsynchronized methods because it comes from the configs,
passed through rewriteTopology. -->
<Package name="org.apache.kafka.streams.processor.internals"/>
<Source name="InternalTopologyBuilder.java"/>
<Bug pattern="IS2_INCONSISTENT_SYNC"/>
</Match>
<Match>
<!-- Ignore a warning about synchronizing on an AtomicBoolean -->
<Package name="kafka.metrics"/>
<Source name="KafkaMetricsReporter.scala"/>
<Method name="startReporters"/>
<Bug pattern="JLM_JSR166_UTILCONCURRENT_MONITORENTER"/>
</Match>
<Match>
<!-- Ignore spurious warning about imbalanced synchronization on a cached Exception. Some accesses of the
variable must occur in synchronized blocks, while some need not, because of the nature of the producer.
This seems to throw the static checker off. -->
<Package name="org.apache.kafka.clients.producer" />
<Source name="TransactionState.java" />
<Bug pattern="IS2_INCONSISTENT_SYNC" />
</Match>
<Match>
<!-- Ignore spurious warning about inconsistent synchronization on a currentFetch.
Locking is consistent but does not use synchronized methods. All accesses
are performed in the application thread once it has acquired the lock. -->
<Package name="org.apache.kafka.clients.consumer.internals" />
<Source name="ShareConsumerImpl.java" />
<Bug pattern="IS2_INCONSISTENT_SYNC" />
</Match>
<Match>
<!-- Suppress a spurious warning about an unreleased lock. -->
<Class name="kafka.utils.timer.SystemTimer"/>
<Method name="add"/>
<Bug pattern="UL_UNRELEASED_LOCK_EXCEPTION_PATH"/>
</Match>
<Match>
<!-- Suppress a spurious warning about calling notify without modifying
other state under the monitor. -->
<Package name="org.apache.kafka.trogdor.workload"/>
<Source name="RoundTripWorker.java"/>
<Bug pattern="NN_NAKED_NOTIFY"/>
</Match>
<Match>
<Package name="org.apache.kafka.streams.scala"/>
<Source name="FunctionsCompatConversions.scala"/>
<Bug pattern="EQ_UNUSUAL"/>
</Match>
- <Match>
<Package name="org.apache.kafka.streams.scala"/>
<Or>
<Class name="org.apache.kafka.streams.scala.Serializer" />
<Class name="org.apache.kafka.streams.scala.Deserializer" />
</Or>
<Bug pattern="NM_SAME_SIMPLE_NAME_AS_INTERFACE"/>
</Match>
<!-- Suppress warnings for unused members that are undetectably used by Jackson -->
<Match>
<Package name="org.apache.kafka.streams.examples.pageview"/>
<Bug pattern="NP_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD"/>
</Match>
<Match>
<Package name="org.apache.kafka.streams.examples.pageview"/>
<Bug pattern="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"/>
</Match>
<Match>
<Package name="org.apache.kafka.streams.examples.pageview"/>
<Bug pattern="UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD"/>
</Match>
<!-- END Suppress warnings for unused members that are undetectably used by Jackson -->
<Match>
<!-- Boolean deserializer intentionally returns null on null input. -->
<Class name="org.apache.kafka.common.serialization.BooleanDeserializer"/>
<Method name="deserialize"/>
<Bug pattern="NP_BOOLEAN_RETURN_NULL"/>
</Match>
<Match>
<!-- False positive - null is allow in SortedMap -->
<Class name="org.apache.kafka.streams.processor.internals.assignment.Graph"/>
<Bug pattern="NP_NONNULL_PARAM_VIOLATION"/>
</Match>
<Match>
<!-- Suppress a warning about ignoring return value because this is intentional. -->
<Class name="org.apache.kafka.common.config.AbstractConfig$ResolvingMap"/>
<Method name="get"/>
<Bug pattern="RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT"/>
</Match>
<Match>
<!-- False positive - the field is used in other modules and its unit test -->
<Class name="org.apache.kafka.common.utils.PrimitiveRef$LongRef"/>
<Field name="value"/>
<Bug pattern="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"/>
</Match>
<Match>
<!-- Suppress warnings related to jmh generated code -->
<Package name="org.apache.kafka.jmh.acl.generated"/>
</Match>
<Match>
<!-- Suppress warnings related to jmh generated code -->
<Package name="org.apache.kafka.jmh.metadata.generated"/>
</Match>
<Match>
<Package name="org.apache.kafka.common.security.oauthbearer.secured" />
<Bug pattern="NM_SAME_SIMPLE_NAME_AS_SUPERCLASS"/>
</Match>
<Match>
<Class name="org.apache.kafka.jmh.util.ByteUtilsBenchmark$BaseBenchmarkState" />
<!-- Suppress warning because JMH code is used to instantiate Random() once per Trial. This is done to ensure
that all benchmarks run with same seed for Random. -->
<Bug pattern="DMI_RANDOM_USED_ONLY_ONCE"/>
</Match>
<Match>
<!-- Suppress a warning about await not being in a loop - we expect the loop to be outside the method. -->
<Class name="org.apache.kafka.streams.processor.internals.tasks.DefaultTaskManager"/>
<Bug pattern="WA_AWAIT_NOT_IN_LOOP"/>
</Match>
<Match>
<!-- Suppress the warnings about the caller not using the return value from Consumer. KafkaConsumer now
delegates all API calls to an internal instance of Consumer, which confuses SpotBugs. -->
<Or>
<Class name="org.apache.kafka.tools.ClientCompatibilityTest"/>
<Class name="org.apache.kafka.tools.StreamsResetter"/>
</Or>
<Bug pattern="RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT"/>
</Match>
<Match>
<!-- Suppress warning about using static DateFormat in a multithreaded context -->
<Class name="org.apache.kafka.tools.ReplicaVerificationTool$ReplicaBuffer"/>
<Bug pattern="STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE"/>
</Match>
<Match>
<!-- Suppress warning about SING_SINGLETON_HAS_NONPRIVATE_CONSTRUCTOR in multiple class -->
<Or>
<Class name="org.apache.kafka.common.Node"/>
<Class name="org.apache.kafka.common.record.UnalignedMemoryRecords"/>
<Class name="org.apache.kafka.clients.Metadata$LeaderAndEpoch"/>
<Class name="org.apache.kafka.server.share.fetch.ShareAcquiredRecords"/>
</Or>
<Bug pattern="SING_SINGLETON_HAS_NONPRIVATE_CONSTRUCTOR"/>
</Match>
</FindBugsFilter>