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

<FindBugsFilter> <!-- datasketches-pig -->

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

  <!-- Exclude test classes -->
  <Match>
    <Class name="~.*\.*Test" />
  </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>
-->
