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

-->
<FindBugsFilter
        xmlns="https://github.com/spotbugs/filter/3.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="https://github.com/spotbugs/filter/3.0.0 https://raw.githubusercontent.com/spotbugs/spotbugs/3.1.0/spotbugs/etc/findbugsfilter.xsd">


    <!-- pattern sort by alpha -->

    <Match>
        <Bug pattern="BC_UNCONFIRMED_CAST"/>
    </Match>

    <Match>
        <Bug pattern="BC_VACUOUS_INSTANCEOF"/>
    </Match>

    <Match>
        <!-- only for JDK 8 -->
        <Bug pattern="CT_CONSTRUCTOR_THROW"/>
    </Match>

    <Match>
        <Bug pattern="DC_DOUBLECHECK"/>
    </Match>

    <Match>
        <Bug pattern="DC_PARTIALLY_CONSTRUCTED"/>
    </Match>

    <Match>
        <Bug pattern="DM_DEFAULT_ENCODING"/>
        <Class name="org.apache.servicecomb.demo.jaxrs.server.beanParam.BeanParamTestService"/>
    </Match>

    <Match>
        <Bug pattern="DM_DEFAULT_ENCODING"/>
        <Class name="org.apache.servicecomb.it.deploy.Deploys"/>
    </Match>

    <Match>
        <Bug pattern="DM_DEFAULT_ENCODING"/>
        <Class name="org.apache.servicecomb.it.testcase.TestParamCodecEdge"/>
    </Match>

    <Match>
        <Bug pattern="DM_DEFAULT_ENCODING"/>
        <Class name="org.apache.servicecomb.it.testcase.TestRestServerConfigEdge"/>
    </Match>

    <Match>
        <Bug pattern="DM_EXIT"/>
    </Match>

    <Match>
        <Bug pattern="EC_UNRELATED_TYPES"/>
    </Match>

    <Match>
        <Bug pattern="EI_EXPOSE_REP"/>
    </Match>

    <Match>
        <Bug pattern="EI_EXPOSE_REP2"/>
    </Match>

    <Match>
        <Bug pattern="EI_EXPOSE_STATIC_REP2"/>
    </Match>

    <Match>
        <Bug pattern="EQ_COMPARETO_USE_OBJECT_EQUALS"/>
    </Match>

    <Match>
        <Bug pattern="EQ_DOESNT_OVERRIDE_EQUALS"/>
    </Match>

    <Match>
        <Bug pattern="EQ_OVERRIDING_EQUALS_NOT_SYMMETRIC"/>
    </Match>

    <Match>
        <Bug pattern="ICAST_IDIV_CAST_TO_DOUBLE"/>
    </Match>

    <Match>
        <Bug pattern="ICAST_INTEGER_MULTIPLY_CAST_TO_LONG"/>
    </Match>

    <Match>
        <Bug pattern="IS2_INCONSISTENT_SYNC"/>
    </Match>

    <Match>
        <Bug pattern="MF_CLASS_MASKS_FIELD"/>
    </Match>

    <Match>
        <Bug pattern="MS_CANNOT_BE_FINAL"/>
    </Match>

    <Match>
        <Bug pattern="MS_EXPOSE_REP"/>
    </Match>

    <Match>
        <Bug pattern="MS_MUTABLE_ARRAY"/>
    </Match>

    <Match>
        <Bug pattern="MS_MUTABLE_COLLECTION_PKGPROTECT"/>
    </Match>

    <Match>
        <Bug pattern="MS_OOI_PKGPROTECT"/>
    </Match>

    <Match>
        <Bug pattern="MS_SHOULD_BE_FINAL"/>
    </Match>

    <Match>
        <Bug pattern="MS_PKGPROTECT"/>
    </Match>

    <Match>
        <Bug pattern="NM_CLASS_NOT_EXCEPTION"/>
    </Match>

    <Match>
        <Bug pattern="NM_METHOD_NAMING_CONVENTION"/>
    </Match>

    <Match>
        <Bug pattern="NM_SAME_SIMPLE_NAME_AS_SUPERCLASS"/>
    </Match>

    <Match>
        <Bug pattern="NP_NONNULL_PARAM_VIOLATION"/>
        <Class name="org.apache.servicecomb.it.testcase.objectparams.TestJAXRSObjectParamType"/>
    </Match>

    <Match>
        <Bug pattern="NP_NONNULL_PARAM_VIOLATION"/>
        <Class name="org.apache.servicecomb.it.testcase.objectparams.TestRPCObjectParamType"/>
    </Match>

    <Match>
        <Bug pattern="NP_NONNULL_PARAM_VIOLATION"/>
        <Class name="org.apache.servicecomb.it.testcase.objectparams.TestSpringMVCObjectParamType"/>
    </Match>

    <Match>
        <Bug pattern="NP_NONNULL_RETURN_VIOLATION"/>
    </Match>

    <Match>
        <Bug pattern="NP_NULL_ON_SOME_PATH"/>
    </Match>

    <Match>
        <Bug pattern="NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE"/>
    </Match>

    <Match>
        <Bug pattern="NP_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD"/>
    </Match>

    <Match>
        <Bug pattern="OBL_UNSATISFIED_OBLIGATION"/>
    </Match>

    <Match>
        <Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
        <Class name="org.apache.servicecomb.demo.localRegistryServer.SelfServiceInvoker"/>
    </Match>

    <Match>
        <Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
        <Class name="org.apache.servicecomb.demo.mapnull.ParseRequest"/>
    </Match>

    <Match>
        <Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
        <Class name="org.apache.servicecomb.demo.mapnull.ParseResponse"/>
    </Match>

    <Match>
        <Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
        <Class name="org.apache.servicecomb.demo.pojo.client.PojoClient"/>
    </Match>

    <Match>
        <Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
        <Class name="org.apache.servicecomb.demo.registry.SelfServiceInvoker"/>
    </Match>

    <Match>
        <Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
        <Class name="org.apache.servicecomb.demo.zeroconfig.server.SelfServiceInvoker"/>
    </Match>

    <Match>
        <Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
        <Class name="org.apache.servicecomb.demo.zeroconfig.edge.SelfServiceInvoker"/>
    </Match>

    <Match>
        <Bug pattern="RC_REF_COMPARISON"/>
    </Match>

    <Match>
        <Bug pattern="RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE"/>
    </Match>

    <Match>
        <Bug pattern="REC_CATCH_EXCEPTION"/>
        <Class name="org.apache.servicecomb.demo.springmvc.SpringmvcClient"/>
    </Match>

    <Match>
        <Bug pattern="REFLC_REFLECTION_MAY_INCREASE_ACCESSIBILITY_OF_CLASS"/>
    </Match>

    <Match>
        <Bug pattern="RV_NEGATING_RESULT_OF_COMPARETO"/>
    </Match>

    <Match>
        <Bug pattern="RV_RETURN_VALUE_IGNORED"/>
    </Match>

    <Match>
        <Bug pattern="SE_BAD_FIELD"/>
    </Match>

    <Match>
        <Bug pattern="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD"/>
    </Match>

    <Match>
        <Bug pattern="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE"/>
    </Match>

    <Match>
        <Bug pattern="SSD_DO_NOT_USE_INSTANCE_LOCK_ON_SHARED_STATIC_DATA"/>
    </Match>

    <Match>
        <Bug pattern="THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION"/>
    </Match>

    <Match>
        <Bug pattern="THROWS_METHOD_THROWS_CLAUSE_THROWABLE"/>
    </Match>

    <Match>
        <Bug pattern="THROWS_METHOD_THROWS_RUNTIMEEXCEPTION"/>
    </Match>

    <Match>
        <Bug pattern="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"/>
    </Match>

    <Match>
        <Bug pattern="UUF_UNUSED_PUBLIC_OR_PROTECTED_FIELD"/>
    </Match>

    <Match>
        <Bug pattern="UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD"/>
    </Match>

    <Match>
        <Bug pattern="VA_FORMAT_STRING_USES_NEWLINE"/>
    </Match>

</FindBugsFilter>
