| <?xml version="1.0" encoding="UTF-8"?> | |
| <!-- | |
| Copyright (c) 2019, 2024 Oracle and/or its affiliates. All rights reserved. | |
| This program and the accompanying materials are made available under the | |
| terms of the Eclipse Public License v. 2.0 which is available at | |
| http://www.eclipse.org/legal/epl-2.0, | |
| or the Eclipse Distribution License v. 1.0 which is available at | |
| http://www.eclipse.org/org/documents/edl-v10.php. | |
| SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause | |
| --> | |
| <!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd"> | |
| <!-- | |
| This file is based on maven-checkstyle-plugin config/sun_checks.xml file. | |
| Checkstyle configuration that checks the coding conventions based on: | |
| - the Java Language Specification at | |
| http://java.sun.com/docs/books/jls/second_edition/html/index.html | |
| - the Sun Code Conventions at http://java.sun.com/docs/codeconv/ | |
| - the Javadoc guidelines at | |
| http://java.sun.com/j2se/javadoc/writingdoccomments/index.html | |
| - the JDK Api documentation http://java.sun.com/j2se/docs/api/index.html | |
| - some custom relaxations of the rules above & best practices | |
| Checkstyle is very configurable. Be sure to read the documentation at | |
| http://checkstyle.sf.net (or in your downloaded distribution). | |
| Most Checks are configurable, be sure to consult the documentation. | |
| To completely disable a check, just comment it out or delete it from the file. | |
| Finally, it is worth reading the documentation. | |
| --> | |
| <module name="Checker"> | |
| <!-- exclude module-info.java check - checkstyle can't process it --> | |
| <module name="BeforeExecutionExclusionFileFilter"> | |
| <property name="fileNamePattern" value="module\-info\.java$"/> | |
| </module> | |
| <!-- | |
| If you set the basedir property below, then all reported file | |
| names will be relative to the specified directory. See | |
| http://checkstyle.sourceforge.net/5.x/config.html#Checker | |
| <property name="basedir" value="${basedir}"/> | |
| --> | |
| <property name="charset" value="UTF-8"/> | |
| <!-- Checks that each Java package has a Javadoc file used for commenting. --> | |
| <!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocPackage --> | |
| <!-- <module name="JavadocPackage" />--> | |
| <!-- Checks to see if a file contains a tab character. --> | |
| <module name="FileTabCharacter"> | |
| <property name="eachLine" value="true"/> | |
| </module> | |
| <!-- | |
| Making sure we do not have @author tags in javadocs | |
| There is a list of developers in pom.xml that is sufficient for our needs. | |
| See https://github.com/checkstyle/checkstyle/issues/5339 | |
| --> | |
| <module name="RegexpSingleline"> | |
| <!-- The '.' in id is needed, otherwise ArrayIndexOutOfBounds happens --> | |
| <property name="id" value="Javadoc.javadocNoAuthor"/> | |
| <property name="format" value="^\s*\*\s*@author"/> | |
| <property name="minimum" value="0"/> | |
| <property name="maximum" value="0"/> | |
| <property name="message" value="Javadoc has illegal ''author'' tag."/> | |
| <property name="fileExtensions" value="java"/> | |
| </module> | |
| <!-- Checks that property files contain the same keys. --> | |
| <!-- See http://checkstyle.sf.net/config_misc.html#Translation --> | |
| <module name="Translation"/> | |
| <module name="FileLength"/> | |
| <module name="SuppressWarningsFilter"/> | |
| <module name="TreeWalker"> | |
| <module name="SuppressionCommentFilter"> | |
| <property name="offCommentFormat" value="CHECKSTYLE.OFF\: ([\w\|]+)"/> | |
| <property name="onCommentFormat" value="CHECKSTYLE.ON\: ([\w\|]+)"/> | |
| <property name="checkFormat" value="$1"/> | |
| </module> | |
| <module name="SuppressWarningsHolder"/> | |
| <!-- Checks for Javadoc comments. --> | |
| <!-- See http://checkstyle.sf.net/config_javadoc.html --> | |
| <module name="JavadocMethod"> | |
| <property name="accessModifiers" value="protected"/> | |
| <property name="allowMissingReturnTag" value="true"/> | |
| <property name="allowMissingParamTags" value="true"/> | |
| </module> | |
| <module name="JavadocType"> | |
| <property name="scope" value="protected"/> | |
| </module> | |
| <module name="JavadocVariable"> | |
| <property name="scope" value="protected"/> | |
| </module> | |
| <module name="JavadocStyle"/> | |
| <!-- Checks for Naming Conventions. --> | |
| <!-- See http://checkstyle.sf.net/config_naming.html --> | |
| <module name="ConstantName"/> | |
| <module name="LocalFinalVariableName"/> | |
| <module name="LocalVariableName"/> | |
| <module name="MemberName"/> | |
| <module name="MethodName"/> | |
| <module name="PackageName"/> | |
| <module name="ParameterName"/> | |
| <module name="StaticVariableName"/> | |
| <module name="TypeName"/> | |
| <!-- Checks for imports --> | |
| <!-- See http://checkstyle.sf.net/config_import.html --> | |
| <module name="AvoidStarImport"/> | |
| <module name="UnusedImports"/> | |
| <module name="IllegalImport"/> <!-- defaults to sun.* packages --> | |
| <module name="RedundantImport"/> | |
| <module name="ImportOrder"> | |
| <property name="groups" value="java, javax, jakarta, org.eclipse.yasson"/> | |
| <property name="ordered" value="true"/> | |
| <property name="separated" value="true"/> | |
| <property name="option" value="bottom"/> | |
| </module> | |
| <!-- Checks for blocks. You know, those {}'s --> | |
| <!-- See http://checkstyle.sf.net/config_blocks.html --> | |
| <module name="AvoidNestedBlocks"/> | |
| <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="NeedBraces"> | |
| <property name="allowSingleLineStatement" value="true"/> | |
| </module> | |
| <module name="LeftCurly"/> | |
| <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> | |
| <!-- Indentation --> | |
| <property name="tabWidth" value="4"/> | |
| <!-- Wrapping Lines --> | |
| <module name="NoLineWrap"/> | |
| <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> | |
| <!-- Several variable declaration on one line: int i, p; --> | |
| <module name="MultipleVariableDeclarations"/> | |
| <module name="OuterTypeFilename"/> | |
| <module name="OneTopLevelClass"/> | |
| <!-- Checks for whitespace --> | |
| <!-- See http://checkstyle.sf.net/config_whitespace.html --> | |
| <module name="OperatorWrap"/> | |
| <module name="WhitespaceAfter"/> | |
| <module name="MethodParamPad"/> | |
| <module name="NoWhitespaceAfter"/> | |
| <module name="NoWhitespaceBefore"/> | |
| <module name="ParenPad"/> | |
| <module name="TypecastParenPad"/> | |
| <module name="WhitespaceAfter"/> | |
| <module name="WhitespaceAround"> | |
| <!-- Removed static initializer issues: RCURLY, SLIST --> | |
| <property name="tokens" | |
| value="ASSIGN, BAND, BAND_ASSIGN, BOR, BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, COLON, DIV, | |
| DIV_ASSIGN, DO_WHILE, EQUAL, GE, GT, LAND, LCURLY, LE, LITERAL_ASSERT, LITERAL_CATCH, LITERAL_DO, | |
| LITERAL_ELSE, LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN, LITERAL_SWITCH, | |
| LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, LOR, LT, MINUS, MINUS_ASSIGN, MOD, MOD_ASSIGN, | |
| NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION, SL, SL_ASSIGN, SR, SR_ASSIGN, STAR, STAR_ASSIGN, | |
| TYPE_EXTENSION_AND"/> | |
| <property name="allowEmptyConstructors" value="true"/> | |
| <property name="allowEmptyMethods" value="true"/> | |
| <property name="allowEmptyTypes" value="true"/> | |
| <property name="allowEmptyLoops" value="true"/> | |
| <message key="ws.notFollowed" | |
| value="WhitespaceAround: ''{0}'' is not followed by whitespace. Empty blocks may only be represented as '{}' when not part of a multi-block statement (4.1.3)"/> | |
| <message key="ws.notPreceded" | |
| value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/> | |
| </module> | |
| <module name="GenericWhitespace"> | |
| <message key="ws.followed" | |
| value="GenericWhitespace ''{0}'' is followed by whitespace."/> | |
| <message key="ws.preceded" | |
| value="GenericWhitespace ''{0}'' is preceded with whitespace."/> | |
| <message key="ws.illegalFollow" | |
| value="GenericWhitespace ''{0}'' should followed by whitespace."/> | |
| <message key="ws.notPreceded" | |
| value="GenericWhitespace ''{0}'' is not preceded with whitespace."/> | |
| </module> | |
| <!-- Modifier Checks --> | |
| <!-- See http://checkstyle.sf.net/config_modifiers.html --> | |
| <module name="ModifierOrder"/> | |
| <module name="RedundantModifier"/> | |
| <!-- Checks for common coding problems --> | |
| <!-- See http://checkstyle.sf.net/config_coding.html --> | |
| <module name="EmptyStatement"/> | |
| <module name="EqualsHashCode"/> | |
| <module name="IllegalInstantiation"/> | |
| <module name="InnerAssignment"/> | |
| <module name="MissingSwitchDefault"/> | |
| <module name="SimplifyBooleanExpression"/> | |
| <module name="SimplifyBooleanReturn"/> | |
| <!-- Checks for class design --> | |
| <!-- See http://checkstyle.sf.net/config_design.html --> | |
| <module name="HideUtilityClassConstructor"/> | |
| <module name="InterfaceIsType"/> | |
| <module name="VisibilityModifier"> | |
| <property name="packageAllowed" value="true"/> | |
| </module> | |
| <module name="ThrowsCount"> | |
| <property name="max" value="3"/> | |
| </module> | |
| <!-- Miscellaneous other checks. --> | |
| <!-- See http://checkstyle.sf.net/config_misc.html --> | |
| <module name="ArrayTypeStyle"/> | |
| <module name="TodoComment"/> | |
| <module name="UpperEll"/> | |
| <module name="OneStatementPerLine"/> | |
| <!-- <module name="FallThrough"/>--> | |
| <module name="NoFinalizer"/> | |
| </module> | |
| </module> |