<FindBugsFilter> <!-- sketches-core -->

<!--
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.
-->

  <!-- Too many false positives to be useful.  I could not make it happy :( -->
  <Match>
    <Bug pattern="SF_SWITCH_NO_DEFAULT" />
  </Match>

  <!-- False positive.  FindBugs complains if DQS_RESIZE_THRESHOLD == REBUILD_THRESHOLD, 
       but this allows us to tune these constants for different sketches. -->
  <Match>
    <Bug pattern="DB_DUPLICATE_BRANCHES" />
    <Class name="com.yahoo.sketches.theta.DirectQuickSelectSketchR" />
    <Method name="setHashTableThreshold" />
  </Match>

  <!-- False positive.  In this case we want to ignore the exceptions -->
  <Match>
    <Bug pattern="DE_MIGHT_IGNORE" />
    <Class name="com.yahoo.sketches.theta.PairwiseCornerCasesTest" />
    <Method name="checkNotOrdered" />
  </Match>
  
  <Match>   <!-- Exclude for test classes; too many False Positives. -->
    <Bug pattern="NP_NULL_PARAM_DEREF_NONVIRTUAL" />
    <Class name="~.*\.*Test" />
  </Match>
  
  <Match>   <!-- Exclude for test classes; too many False Positives. -->
    <Bug pattern="RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT" />
    <Class name="~.*\.*Test" />
  </Match>
  
  <Match>   <!-- Too many False Positives. -->
    <Bug pattern="DLS_DEAD_LOCAL_STORE" />
  </Match>
  
</FindBugsFilter>



<!--  Examples: -->

<!-- Exclude java.* classes -->
  <!--
  <Match>
    <Package name="java\.*" />
  </Match>
-->

  <!-- Exclude test classes -->
<!-- 
  <Match>
    <Class name="~.*\.*Test" />
  </Match>
-->

<!--
     <Match>
       <Class name="com.foobar.ClassNotToBeAnalyzed" />
     </Match>
-->
<!--
     <Match>
       <Class name="com.foobar.ClassWithSomeBugsMatched" />
       <Bug code="DE,UrF,SIC" />
     </Match>
-->
     <!-- Match all XYZ violations. -->
<!--
     <Match>
       <Bug code="XYZ" />
     </Match>
-->
     <!-- Match all doublecheck violations in these methods of "AnotherClass". -->
<!--
     <Match>
       <Class name="com.foobar.AnotherClass" />
       <Or>
         <Method name="nonOverloadedMethod" />
         <Method name="frob" params="int,java.lang.String" returns="void" />
         <Method name="blat" params="" returns="boolean" />
       </Or>
       <Bug code="DC" />
     </Match>
-->
     <!-- A method with a dead local store false positive (medium priority). -->
<!--
     <Match>
       <Class name="com.foobar.MyClass" />
       <Method name="someMethod" />
       <Bug pattern="DLS_DEAD_LOCAL_STORE" />
       <Priority value="2" />
     </Match>
-->
