<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE module PUBLIC
    "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
    "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">
<module name="Checker">

    <property name="charset" value="UTF-8"/>

    <module name="FileTabCharacter" />

    <module name="RegexpSingleline">
        <property name="format" value="\s+$" />
        <property name="message" value="Line has trailing spaces." />
    </module>

    <module name="TreeWalker">
        <module name="FileContentsHolder" />
        <module name="LineLength">
            <property name="max" value="118"/>
            <property name="ignorePattern" value="https?://"/>
        </module>

        <module name="ConstantName">
            <property name="format" value="^[A-Z_][A-Z0-9]*(_[A-Z0-9]+)*$"/>
        </module>
        <module name="LocalFinalVariableName" />
        <module name="LocalVariableName" />
        <module name="MemberName">
            <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
        </module>
        <module name="MethodName" />
        <module name="PackageName" />
        <module name="ParameterName" />
        <module name="StaticVariableName" />
        <module name="TypeName" />
        <module name="MethodTypeParameterName" />
        <module name="InterfaceTypeParameterName" />
        <module name="ClassTypeParameterName" />

        <module name="AvoidStarImport" />
        <module name="AvoidStaticImport">
	        <property name="excludes"
		        value="org.fdroid.fdroid.Assert.*, org.assertj.core.api.Assertions.*, org.junit.Assert.*, org.junit.Assume.*, org.junit.internal.matchers.ThrowableMessageMatcher.*, org.hamcrest.core.IsNot.*, org.hamcrest.CoreMatchers.*, org.hamcrest.Matchers.*, org.springframework.boot.configurationprocessor.ConfigurationMetadataMatchers.*, org.springframework.boot.configurationprocessor.TestCompiler.*, org.mockito.Mockito.*, org.mockito.BDDMockito.*, org.mockito.Matchers.*, org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*, org.springframework.test.web.servlet.result.MockMvcResultMatchers.*, org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.*, org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.*, org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo" />
        </module>
        <module name="RedundantImport" />
        <module name="UnusedImports" />
        <module name="OuterTypeFilename" />

        <module name="Indentation">
            <property name="basicOffset" value="4"/>
            <property name="braceAdjustment" value="0"/>
            <property name="caseIndent" value="4"/>
            <property name="throwsIndent" value="8"/>
            <property name="lineWrappingIndentation" value="8"/>
            <property name="arrayInitIndent" value="4"/>
        </module>
        <module name="CommentsIndentation"/>
        <module name="EmptyLineSeparator">
            <property name="allowNoEmptyLineBetweenFields" value="true" />
            <property name="allowMultipleEmptyLines" value="false" />
        </module>
        <module name="SeparatorWrap">
            <property name="tokens" value="DOT" />
            <property name="option" value="nl"/>
        </module>
        <module name="SeparatorWrap">
            <property name="tokens" value="COMMA"/>
            <property name="option" value="EOL"/>
        </module>
        <module name="NoLineWrap"/>

        <module name="OneTopLevelClass" />
        <module name="OneStatementPerLine" />

        <module name="EmptyBlock">
            <property name="option" value="TEXT"/>
            <property name="tokens" value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
        </module>

        <module name="EmptyForIteratorPad" />
        <module name="GenericWhitespace" />
        <module name="MethodParamPad" />
        <module name="NoWhitespaceAfter" />
        <module name="NoWhitespaceBefore" />
        <!--<module name="OperatorWrap" />-->
        <module name="ParenPad" />
        <module name="TypecastParenPad" />
        <module name="WhitespaceAfter" />
        <module name="WhitespaceAround" />
        <module name="UnnecessaryParentheses" />

        <module name="ModifierOrder" />
        <module name="RedundantModifier" />
        <module name="AnnotationLocation" />

        <module name="AvoidNestedBlocks" />
        <module name="LeftCurly">
            <property name="maxLineLength" value="100"/>
        </module>
        <module name="NeedBraces">
            <property name="allowSingleLineStatement" value="true"/>
        </module>
        <module name="RightCurly"/>
        <module name="RightCurly">
            <property name="option" value="alone"/>
            <property name="tokens" value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, STATIC_INIT, INSTANCE_INIT"/>
        </module>

        <module name="EmptyStatement" />
        <module name="IllegalInstantiation" />
        <module name="InnerAssignment" />
        <module name="DefaultComesLast" />
        <module name="FallThrough" />

        <module name="FinalClass" />

        <module name="ArrayTypeStyle" />
        <module name="ArrayTrailingComma" />
        <module name="UpperEll" />

        <module name="StringLiteralEquality" />
        <module name="EqualsAvoidNull" />

        <module name="IllegalTokenText">
            <property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/>
            <property name="format" value="\\u00(08|09|0(a|A)|0(c|C)|0(d|D)|22|27|5(C|c))|\\(0(10|11|12|14|15|42|47)|134)"/>
            <property name="message" value="Avoid using corresponding octal or Unicode escape."/>
        </module>
        <module name="AvoidEscapedUnicodeCharacters">
            <property name="allowEscapesForControlCharacters" value="true"/>
            <property name="allowByTailComment" value="true"/>
            <property name="allowNonPrintableEscapes" value="true"/>
        </module>

        <module name="SuppressWarningsHolder" />
    </module>

    <module name="SuppressWarningsFilter" />
    <module name="SuppressWithNearbyCommentFilter">
      <property name="commentFormat" value="NOCHECKSTYLE ([\w\|]+)"/>
      <property name="checkFormat" value="$1"/>
      <property name="influenceFormat" value="1"/>
    </module>

</module>