<?xml version="1.0" encoding="UTF-8"?>


<!--
  ~ Nextcloud Talk application
  ~
  ~ @author Mario Danic
  ~ @author Andy Scherzinger
  ~ @author Tim Krüger
  ~ Copyright (C) 2021 Tim Krüger <t@timkrueger.me>
  ~ Copyright (C) 2021 Andy Scherzinger <info@andy-scherzinger.de>
  ~ Copyright (C) 2017-2019 Mario Danic <mario@lovelyhq.com>
  ~
  ~ This program is free software: you can redistribute it and/or modify
  ~ it under the terms of the GNU General Public License as published by
  ~ the Free Software Foundation, either version 3 of the License, or
  ~ at your option) any later version.
  ~
  ~ This program is distributed in the hope that it will be useful,
  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  ~ GNU General Public License for more details.
  ~
  ~ You should have received a copy of the GNU General Public License
  ~ along with this program.  If not, see <http://www.gnu.org/licenses/>.
  -->

<FindBugsFilter>
    <Match>
        <Class name="~.*\.Manifest\$.*" />
    </Match>
    <Match>
        <Class name="~.*\.R\$.*" />
    </Match>
    <Match>
        <Class name="~.*\$\$Parcelable.*" />
    </Match>
	<!-- Room code is autogenerated. Exclude it from Check. -->
	<Match>
        <Class name="~.*\.TalkDatabase_Impl.*" />
    </Match>
	<Match>
        <Class name="~.*\.UsersDao_Impl.*" />
    </Match>
	<Match>
        <Class name="~.*\.ArbitraryStoragesDao_Impl.*" />
    </Match>
    <!-- JSON/Data classes with generated accessor methods -->
    <Match>
        <Class name="~com\.nextcloud\.talk\.models\.json\.push.*" />
    </Match>

    <!-- Dagger code is autogenerated. Exclude it from Check. -->
    <Match>
        <Or>
            <Class name="~.*\.Dagger.*" />
			<Class name="~~.*\.dagger\.android\..*" />
			<Class name="~~.*\.dagger\.modules\..*" />
        </Or>
    </Match>
    <!-- Dagger generated code uses internal APIs -->
    <Match>
	    <Or>
            <Class name="~.*\..*.*Factory" />
		    <Class name="~.*\..*.*Factory_Impl" />
		</Or>
        <Bug pattern="IICU_INCORRECT_INTERNAL_CLASS_USE" />
    </Match>

    <!-- Data bindings autogenerated classes -->
    <Match>
        <Or>
            <Class name="~.*BindingImpl" />
            <Class name="~.*\.DataBinderMapperImpl" />
            <Class name="~.*Binding" />
        </Or>
    </Match>

    <!-- Ignore generated JsonObjectMapper -->
    <Match>
        <Class name="~.*\$\$JsonObjectMapper.*" />
    </Match>
    
	<!-- Third-party library code -->
	<Match>
	    <Or>
            <Package name="~third\.parties\..*" />
		</Or>
	</Match>    

    <Bug pattern="PATH_TRAVERSAL_IN" />
    <Bug pattern="ANDROID_EXTERNAL_FILE_ACCESS" />
    <Bug pattern="BAS_BLOATED_ASSIGNMENT_SCOPE" />
    <Bug pattern="IMC_IMMATURE_CLASS_BAD_SERIALVERSIONUID" />
    <Bug pattern="EI_EXPOSE_REP" />
    <Bug pattern="EI_EXPOSE_REP2" />

    <!-- This is unmanageable for now due to large amount of interconnected static state -->
    <Bug pattern="FCCD_FIND_CLASS_CIRCULAR_DEPENDENCY" />

    <!--Autogenerated Room classes-->
    <Match>
        <Class name="~.*\.TalkDatabase_Impl.*" />
    </Match>
    <Match>
        <Class name="~.*\..*Dao_Impl.*" />
    </Match>

</FindBugsFilter>