blob: ef582a67f60e776b597b0495919b04c346af6a14 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
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.
-->
<!-- Exclusion filter for running FindBugs against Apache Harmony -->
<!--
Format and code information is available here
http://findbugs.sourceforge.net/manual/filter.html
-->
<FindBugsFilter>
<!-- Public semaphore in ReferenceQueue is okay -->
<Match>
<Class name="java.lang.ref.ReferenceQueue"></Class>
<Bug pattern="PS_PUBLIC_SEMAPHORES"></Bug>
</Match>
<!-- Number classes should be able to call Number constructors -->
<Match>
<Or>
<Class name="java.lang.Byte" />
<Class name="java.lang.Character" />
<Class name="java.lang.Integer" />
<Class name="java.lang.Long" />
<Class name="java.lang.Short" />
</Or>
<Bug pattern="DM_NUMBER_CTOR" />
</Match>
<!--
OK to use signed right shift instead of unsigned because numbers used
are positive
-->
<Match>
<Class name="java.lang.Character$UnicodeBlock" />
<Method name="of" />
<Bug code="IM" />
</Match>
<!--
Javadoc specifies that ByteArrayInputStream's constructors are
designed to take a mutable byte array as an argument and not copy it
-->
<Match>
<Class name="java.io.ByteArrayInputStream" />
<Bug pattern="EI_EXPOSE_REP2" />
</Match>
<!--
Javadoc specifies that CharArrayReader's constructors are designed to
take a mutable char array as an argument and not copy it
-->
<Match>
<Class name="java.io.CharArrayReader" />
<Bug pattern="EI_EXPOSE_REP2" />
</Match>
<!-- Fallthrough in switch statement is meant to be there -->
<Match>
<Class name="java.io.LineNumberInputStream" />
<Method name="read" />
<Bug code="SF" />
</Match>
<!-- Fallthrough in switch statement is meant to be there -->
<Match>
<Class name="java.io.LineNumberReader" />
<Method name="read" />
<Bug pattern="SF_SWITCH_FALLTHROUGH" />
</Match>
<!--
OK to compare Strings using using == or != in the String class itself
-->
<Match>
<Class name="java.lang.String" />
<Bug pattern="ES_COMPARING_STRINGS_WITH_EQ" />
</Match>
<Match>
<Class name="java.lang.String" />
<Bug pattern="ES_COMPARING_PARAMETER_STRING_WITH_EQ" />
</Match>
<!-- Ignore this unused private method -->
<Match>
<Class name="java.lang.String" />
<Method name="indexOf" />
<Bug pattern="UPM_UNCALLED_PRIVATE_METHOD" />
</Match>
<!--
Field h is required to be non-transient as part of the serialized form
specification for Proxy
-->
<Match>
<Class name="java.lang.reflect.Proxy" />
<Field name="h" />
<Bug code="Se" />
</Match>
<!--
Exceptions have to be ignored because method doesn't throw an
Exception in the spec
-->
<Match>
<Class name="java.lang.SecurityManager" />
<Method name="checkTopLevelWindow" />
<Bug pattern="DE_MIGHT_IGNORE" />
</Match>
<!-- OK to use mutable Objects for DatagramPacket -->
<Match>
<Class name="java.net.DatagramPacket" />
<Or>
<Method name="setData" />
<Method name="getData" />
</Or>
<Bug code="EI2, EI" />
</Match>
<!-- Spec requires that InetAddress readResolve is private -->
<Match>
<Class name="java.net.InetAddress" />
<Method name="readResolve" />
<Bug pattern="SE_PRIVATE_READ_RESOLVE_NOT_INHERITED" />
</Match>
<!-- Method is not static in the spec, so can't change it -->
<Match>
<Class name="java.net.URLConnection" />
<Method name="setDefaultUseCaches" />
<Bug pattern="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD" />
</Match>
<!-- Exceptions are supposed to be ignored -->
<Match>
<Class name="java.net.URLConnection" />
<Method name="getContentHandler" />
<Bug pattern="DE_MIGHT_IGNORE" />
</Match>
<!-- Exceptions are supposed to be ignored -->
<Match>
<Class name="java.net.URL" />
<Method name="setupStreamHandler" />
<Bug pattern="DE_MIGHT_IGNORE" />
</Match>
<!-- URLClassLoader needs to use URL.equals() method -->
<Match>
<Class name="java.net.URLClassLoader" />
<Bug pattern="DMI_BLOCKING_METHODS_ON_URL" />
</Match>
<!-- URLClassLoader deals with collections of URLs -->
<Match>
<Class name="java.net.URLClassLoader" />
<Bug pattern="DMI_COLLECTION_OF_URLS" />
</Match>
<!-- OK for URLClassLoader to ignore the exception here -->
<Match>
<Class name="java.net.URLClassLoader" />
<Method name="findResources"/>
<Bug pattern="DE_MIGHT_IGNORE" />
</Match>
<!-- Ignoring exceptions in this method is ok -->
<Match>
<Class name="java.net.URL" />
<Method name="setupStreamHandler" />
<Bug pattern="DE_MIGHT_IGNORE" />
</Match>
<!--
It does make sense for AbstractList to have a transient field because
it has serializable subclasses
-->
<Match>
<Class name="java.util.AbstractList" />
<Bug code="Se" />
</Match>
<!-- False positive caused by compiler -->
<Match>
<Class name="java.util.AbstractList" />
<Method name="addAll" />
<Bug code="DLS" />
</Match>
<!-- Spec says this field is not set by deserialization -->
<Match>
<Class name="java.util.EventObject" />
<Field name="source" />
<Bug pattern="SE_TRANSIENT_FIELD_NOT_RESTORED" />
</Match>
<!--
GregorianCalendar.equals does not need to check for null because it
delegates to its superclass, which does
-->
<Match>
<Class name="java.util.GregorianCalendar" />
<Method name="equals" />
<Bug code="NP" />
</Match>
<!--
The comparator field is part of the serialized form specification for
both TreeMap and PriorityQueue
-->
<Match>
<Or>
<Class name="java.util.TreeMap" />
<Class name="java.util.PriorityQueue" />
</Or>
<Field name="comparator" />
<Bug code="Se" />
</Match>
<!-- Ignore this unread field -->
<Match>
<Class name="java.util.Timer" />
<Field name="finalizer" />
<Bug pattern="URF_UNREAD_FIELD" />
</Match>
<!-- Exception is ignored on purpose -->
<Match>
<Class name="java.util.Timer$TimerImpl" />
<Method name="run" />
<Bug pattern="DE_MIGHT_IGNORE" />
</Match>
<!--
Initialization of Locale.availableLocales doesn't need to be
synchronized as it won't matter if it is initialized twice
-->
<Match>
<Class name="java.util.Locale" />
<Method name="getAvailableLocales" />
<Bug code="LI" />
</Match>
<!--
OK to use signed right shift instead of unsigned because all numbers
are positive
-->
<Match>
<Class name="java.util.Arrays" />
<Bug code="IM" />
</Match>
<!--
OK to use unsynchronized access in Hashtable.HashIterator and
Hashtable.HashEnumerator
-->
<!--
NOTE - it would be good to be able to make this exclusion a bit more
specific
-->
<Match>
<Class name="java.util.Hashtable" />
<Bug code="IS" />
</Match>
<!--
Comparators are generally Serializable so it's OK for this field not
to be transient
-->
<Match>
<Class name="java.util.Collections$ReverseComparatorWithComparator" />
<Bug code="Se" />
</Match>
<!-- Fall through in switch statements are meant to be there -->
<Match>
<Class name="org.apache.harmony.luni.util.FloatingPointParser" />
<Or>
<Method name="parseDblName" />
<Method name="parseFltName" />
</Or>
<Bug pattern="SF_SWITCH_FALLTHROUGH" />
</Match>
<!-- OK to throw a NullPointerException if one key is null -->
<Match>
<Class name="org.apache.harmony.luni.util.TwoKeyHashMap" />
<Bug code="NP" />
</Match>
<!-- Unread fields are used by native code -->
<Match>
<Class name="org.apache.harmony.luni.net.GenericIPMreq" />
<Or>
<Field name="interfaceAddr" />
<Field name="isIPV6Address" />
<Field name="interfaceIdx" />
</Or>
<Bug pattern="URF_UNREAD_FIELD" />
</Match>
<!-- Invocation of inherited method is intended -->
<Match>
<Class
name="org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnection$HttpsEngine" />
<Bug code="IA" />
</Match>
<!-- JarURLConnectionImpl needs to handle URLs -->
<Match>
<Class
name="org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnectionImpl" />
<Bug pattern="DMI_COLLECTION_OF_URLS" />
</Match>
</FindBugsFilter>