<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE module PUBLIC "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN" "https://checkstyle.org/dtds/configuration_1_3.dtd"> <!-- http://checkstyle.sourceforge.net/config.html --> <module name="Checker"> <property name="charset" value="UTF-8"/> <!-- https://docs.codeclimate.com/docs/checkstyle --> <property name="severity" value="warning"/> <module name="SuppressionFilter"> <property name="file" value="backend/checkstyle-suppressions.xml" /> </module> <module name="LineLength"> <property name="max" value="160"/> <property name="fileExtensions" value="java"/> <property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://"/> </module> <module name="FileTabCharacter"> <property name="eachLine" value="true"/> <property name="fileExtensions" value="java,jst,jsm,css,js,xml"/> </module> <module name="NewlineAtEndOfFile"/> <module name="RegexpSingleline"> <property name="format" value="((//.*)|(\*.*))FIXME([^(]|$)" /> <property name="message" value='All FIXME should be named e.g. "FIXME(John): note."' /> </module> <module name="RegexpSingleline"> <property name="format" value="((//.*)|(\*.*))TODO([^(]|$)" /> <property name="message" value="All TODO should be named e.g. 'TODO(John): note.'" /> </module> <module name="RegexpSingleline"> <property name="format" value="@author" /> <property name="message" value="Don't state the author's name. Use Git history." /> <property name="fileExtensions" value="java"/> </module> <module name="RegexpSingleline"> <property name="format" value="\* Created by " /> <property name="message" value="Don't state the author's name. Use Git history." /> </module> <module name="RegexpSingleline"> <property name="format" value="System\.(err|out)\.print"/> <property name="message" value="Don't use System.(out|err).print, use a logger."/> </module> <module name="SuppressWarningsFilter"/> <module name="FileLength"> <property name="max" value="2000" /> <property name="fileExtensions" value="java" /> </module> <module name="TreeWalker"> <module name="SuppressionCommentFilter"/> <module name="SuppressWarningsHolder" /> <module name="InterfaceIsType"/> <module name="OuterTypeFilename"/> <module name="OneTopLevelClass"/> <module name="UnusedImports" /> <module name="RedundantImport"/> <module name="AvoidStarImport"> <property name="allowStaticMemberImports" value="true"/> </module> <module name="InvalidJavadocPosition"/> <module name="JavadocContentLocation"/> <module name="JavadocBlockTagLocation"/> <module name="JavadocMethod"> <property name="validateThrows" value="false" /> <property name="allowMissingReturnTag" value="true" /> <property name="allowMissingParamTags" value="true" /> </module> <module name="VisibilityModifier"> <property name="protectedAllowed" value="true"/> <property name="packageAllowed" value="true"/> </module> <module name="ModifierOrder"/> <module name="SimplifyBooleanExpression"/> <module name="BooleanExpressionComplexity"> <property name="max" value="4"/> </module> <module name="HiddenField"> <property name="tokens" value="VARIABLE_DEF"/> </module> <module name="MethodParamPad"> <property name="allowLineBreaks" value="true"/> </module> <module name="OneStatementPerLine" /> <module name="MethodName"> <property name="format" value="^[a-z][a-zA-Z_0-9]*$"/> </module> <module name="PackageName"> <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/> </module> <module name="DeclarationOrder"> <property name="ignoreModifiers" value="true"/> </module> <module name="LocalFinalVariableName"/> <module name="LocalVariableName"/> <module name="StaticVariableName"/> <module name="TypeName"/> <module name="MemberName"/> <module name="ParameterName"/> <module name="CatchParameterName"> <property name="format" value="^[a-z][a-zA-Z0-9]*$"/> </module> <!-- we want to allow frequently used name ID --> <module name="MethodTypeParameterName"> <property name="format" value="^[A-Z]|ID$"/> </module> <!-- we want to allow frequently used name ID --> <module name="ClassTypeParameterName"> <property name="format" value="^[A-Z]|ID$"/> </module> <!-- we want to allow frequently used name ID --> <module name="InterfaceTypeParameterName"> <property name="format" value="^[A-Z]|ID$"/> </module> <module name="RecordTypeParameterName"/> <module name="NoLineWrap"/> <module name="EmptyForIteratorPad"/> <module name="EmptyForInitializerPad"/> <module name="SeparatorWrap"> <property name="tokens" value="DOT"/> <property name="option" value="nl"/> </module> <module name="SeparatorWrap"> <property name="id" value="separator-wrap-dot"/> <property name="tokens" value="COMMA"/> <property name="option" value="EOL"/> </module> <module name="CommentsIndentation"/> <module name="ParameterAssignment"/> <module name="OperatorWrap" /> <!-- if (condition) { return true; } else { return false; } ... return condition --> <module name="SimplifyBooleanReturn"/> <module name="MethodLength"> <property name="id" value="method-length"/> <property name="max" value="200" /> <property name="countEmpty" value="false" /> </module> <module name="MethodLength"> <property name="id" value="method-length-constructor"/> <property name="max" value="60"/> <property name="tokens" value="CTOR_DEF"/> </module> <module name="ThrowsCount"/> <!-- method argument count limit --> <module name="ParameterNumber"> <property name="max" value="8"/> <property name="tokens" value="METHOD_DEF"/> <property name="ignoreOverriddenMethods" value="true"/> </module> <module name="StringLiteralEquality"/> <module name="MutableException"/> <module name="NeedBraces"/> <module name="UpperEll"/> <module name="TrailingComment"/> <module name="MissingDeprecated" /> <module name="IllegalThrows"> <property name="illegalClassNames" value="Error, Throwable, java.lang.Error, java.lang.Throwable"/> </module> <module name="MultipleVariableDeclarations"/> <module name="EmptyStatement"/> <module name="PackageDeclaration"/> <!-- only allow empty blocks with a descriptive comment --> <module name="EmptyBlock"> <property name="option" value="text"/> </module> <module name="AvoidNestedBlocks"> <property name="allowInSwitchCase" value="true"/> </module> <module name="EqualsHashCode"/> <module name="NoClone"/> <module name="IllegalToken"/> <module name="NestedForDepth"> <property name="max" value="2"/> </module> <module name="NestedTryDepth"/> <module name="NestedIfDepth"> <property name="max" value="2"/> </module> <module name="RightCurly"/> <module name="LeftCurly"/> <module name="DefaultComesLast"/> <module name="SingleSpaceSeparator"/> <module name="ParenPad"/> <module name="TypecastParenPad"/> <module name="InnerAssignment"/> <module name="NoWhitespaceBefore"/> <module name="WhitespaceAfter"/> <module name="WhitespaceAround"> <property name="allowEmptyMethods" value="true"/> <property name="allowEmptyConstructors" value="true"/> <property name="allowEmptyLoops" value="true"/> <property name="allowEmptyTypes" value="true"/> <property name="allowEmptyLambdas" value="true"/> </module> <module name="EmptyCatchBlock" /> <module name="GenericWhitespace"/> <module name="HideUtilityClassConstructor"/> <module name="SuperFinalize"/> </module> </module>