You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
344 lines
14 KiB
344 lines
14 KiB
<!-- |
|
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> |
|
|
|
<!-- false positive in Java 11, see https://github.com/spotbugs/spotbugs/issues/756 --> |
|
<Match> |
|
<Bug pattern="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE"/> |
|
</Match> |
|
|
|
<!-- false positive in Java 11, see https://github.com/spotbugs/spotbugs/issues/756 --> |
|
<Match> |
|
<Bug pattern="RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE"/> |
|
</Match> |
|
|
|
<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 --> |
|
<Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2,MS_PKGPROTECT"/> |
|
</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 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> |
|
<!-- 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 --> |
|
<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"/> |
|
</Or> |
|
</Match> |
|
|
|
<Match> |
|
<!-- Suppression for the equals() for extensiom methods. --> |
|
<Or> |
|
<Class name="kafka.api.package$ElectLeadersRequestOps"/> |
|
</Or> |
|
<Bug pattern="EQ_UNUSUAL"/> |
|
</Match> |
|
|
|
<Match> |
|
<!-- Add a suppression for auto-generated calls to instanceof in kafka.utils.Json --> |
|
<Source name="Json.scala"/> |
|
<Package name="kafka.utils"/> |
|
<Bug pattern="BC_VACUOUS_INSTANCEOF"/> |
|
</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 some minor warnings about machine-generated code for |
|
benchmarking. --> |
|
<Or> |
|
<Package name="org.apache.kafka.jmh.cache.generated"/> |
|
<Package name="org.apache.kafka.jmh.common.generated"/> |
|
<Package name="org.apache.kafka.jmh.record.generated"/> |
|
<Package name="org.apache.kafka.jmh.producer.generated"/> |
|
</Or> |
|
</Match> |
|
|
|
<Match> |
|
<!-- Suppress warnings about generated schema arrays. --> |
|
<Package name="org.apache.kafka.common.message"/> |
|
<Bug pattern="MS_MUTABLE_ARRAY"/> |
|
</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.WorkerSourceTask"/> |
|
<Method name="execute"/> |
|
<Bug pattern="RV_RETURN_VALUE_IGNORED"/> |
|
</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="kafka.log"/> |
|
<Source name="LogCleanerManager.scala"/> |
|
<Bug pattern="RV_RETURN_VALUE_IGNORED,RV_RETURN_VALUE_IGNORED_BAD_PRACTICE"/> |
|
</Match> |
|
|
|
<Match> |
|
<!-- Suppress some warnings about intentional switch statement fallthrough. --> |
|
<Class name="org.apache.kafka.connect.runtime.WorkerConnector"/> |
|
<Or> |
|
<Method name="doStart"/> |
|
<Method name="pause"/> |
|
</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> |
|
<!-- Suppress a spurious warning about a missing default case. --> |
|
<Or> |
|
<Class name="org.apache.kafka.common.utils.Crc32"/> |
|
<Class name="org.apache.kafka.common.utils.PureJavaCrc32C"/> |
|
</Or> |
|
<Method name="update"/> |
|
<Bug pattern="SF_SWITCH_NO_DEFAULT"/> |
|
</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 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 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> |
|
<!-- TODO: fix this (see KAFKA-4996) --> |
|
<Or> |
|
<Package name="org.apache.kafka.streams.state.internals"/> |
|
<Package name="org.apache.kafka.streams.processor.internals"/> |
|
<Package name="org.apache.kafka.streams.processor"/> |
|
<Package name="org.apache.kafka.streams"/> |
|
</Or> |
|
<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> |
|
<!-- 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 warning about an intentional infinite loop. --> |
|
<Package name="kafka.utils"/> |
|
<Source name="Throttler.scala"/> |
|
<Method name="main"/> |
|
<Bug pattern="IL_INFINITE_LOOP"/> |
|
</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="FunctionConversions.scala"/> |
|
<Bug pattern="EQ_UNUSUAL"/> |
|
</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> |
|
<!-- 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> |
|
|
|
</FindBugsFilter>
|
|
|