<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Nextcloud Talk - Android Client
  ~ 
  ~ SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors
  ~ SPDX-FileCopyrightText: 2021 Andy Scherzinger <info@andy-scherzinger.de>
  ~ SPDX-FileCopyrightText: 2021 Tim Krüger <t@timkrueger.me>
  ~ SPDX-FileCopyrightText: 2017-2019 Mario Danic <mario@lovelyhq.com>
  ~ SPDX-License-Identifier: GPL-3.0-or-later
-->
<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>