<!--
  ============LICENSE_START=======================================================
  Copyright (c) 2021 Pantheon.tech.
  Modifications Copyright (C) 2021 Bell Canada.
  ================================================================================
  Licensed 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.
  ============LICENSE_END=========================================================
-->

<FindBugsFilter>
  <Match>
    <!-- Ignore generated code -->
    <Source name="~.*generated-sources.*.java"/>
  </Match>
  <Match>
    <Or>
      <!-- Anonymous inner classes are very common. -->
      <Bug pattern="SIC_INNER_SHOULD_BE_STATIC_ANON" />

      <!-- We use static slf4j Logger (this rule is from KengoTODA/findbugs-slf4j jp.skypencil.findbugs.slf4:bug-pattern) -->
      <Bug pattern="SLF4J_LOGGER_SHOULD_BE_NON_STATIC" />

      <!-- Guava 25.1+ uses the Checker Framework's @Nullable which SpotBugs doesn't handle correctly, even though it's
           supposed to; see https://github.com/spotbugs/spotbugs/issues/743 -->
      <Bug pattern="NP_NONNULL_PARAM_VIOLATION" />
      <Bug pattern="NP_NULL_PARAM_DEREF" />
      <Bug pattern="NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE" />
      <Bug pattern="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE" />
      <Bug pattern="NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE" />

      <!-- https://stackoverflow.com/a/34674776. Doesn't detect Lombok All Args Constructor variables being used with map get key and value, which can lead to spotbugs being detected
      on used fields -->
      <Bug pattern="URF_UNREAD_FIELD"/>

      <!-- https://github.com/spotbugs/spotbugs/issues/511. Strict reading of Object.equals() contract means that
           evenever equals() behaviour is defined, all implementations need to adhere to it. The only reason
           to override the method (assuming correct API design, of course) is to provide a more efficient
           implementation. This rule would be forcing a @SuppressFBWarnings on perfectly compliant classes. -->
      <Bug pattern="EQ_DOESNT_OVERRIDE_EQUALS"/>

      <!-- https://github.com/spotbugs/spotbugs/issues/756. spotbugs does not grok Java 11's try-with-resources -->
      <Bug pattern="RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE"/>
      <Bug pattern="UPM_UNCALLED_PRIVATE_METHOD"/>
      <Bug pattern="EI_EXPOSE_REP"/>
      <Bug pattern="EI_EXPOSE_REP2"/>
    </Or>
  </Match>

</FindBugsFilter>
