1
0
mirror of synced 2026-01-05 03:04:38 -05:00
Files
airbyte/tools/gradle/pmd/rules.xml
Anne ab070a7724 Apply pmd to airbyte-config (#13003)
* Apply pmd to airbyte-config, exclude rules for now
2022-05-24 10:58:51 -07:00

231 lines
10 KiB
XML

<?xml version="1.0"?>
<ruleset name="Airbyte Rules"
xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 https://pmd.sourceforge.io/ruleset_2_0_0.xsd">
<description>PMD Rules for Airbyte</description>
<!-- TODO: couldn't figure out how to make gradle exclude to work so defining exclude at PMD level. Cons: hardcoding 'generated' -->
<exclude-pattern>.*/generated/.*</exclude-pattern>
<exclude-pattern>.*/airbyte-integrations/.*</exclude-pattern>
<rule ref="category/java/bestpractices.xml">
<!-- exclude permanently -->
<exclude name="GuardLogStatement" />
<exclude name="JUnitAssertionsShouldIncludeMessage" />
<exclude name="JUnitTestContainsTooManyAsserts" />
<!-- to be applied eventually -->
<exclude name="AbstractClassWithoutAbstractMethod"/>
<exclude name="ArrayIsStoredDirectly"/>
<exclude name="AvoidPrintStackTrace"/>
<exclude name="AvoidReassigningLoopVariables"/>
<exclude name="AvoidReassigningParameters"/>
<exclude name="AvoidUsingHardCodedIP"/>
<exclude name="CheckResultSet"/>
<exclude name="DoubleBraceInitialization"/>
<exclude name="ForLoopCanBeForeach"/>
<exclude name="JUnit4TestShouldUseTestAnnotation"/>
<exclude name="JUnit5TestShouldBePackagePrivate"/>
<exclude name="JUnitTestsShouldIncludeAssert"/>
<exclude name="LiteralsFirstInComparisons"/>
<exclude name="LooseCoupling"/>
<exclude name="MissingOverride"/>
<exclude name="PreserveStackTrace"/>
<exclude name="SwitchStmtsShouldHaveDefault"/>
<exclude name="SystemPrintln"/>
<exclude name="UnusedAssignment"/>
<exclude name="UnusedFormalParameter"/>
<exclude name="UnusedLocalVariable"/>
<exclude name="UnusedPrivateField"/>
<exclude name="UnusedPrivateMethod"/>
<exclude name="UseCollectionIsEmpty"/>
<exclude name="UseVarargs"/>
</rule>
<rule ref="category/java/codestyle.xml">
<!-- exclude permanently -->
<exclude name="AtLeastOneConstructor"/>
<exclude name="CallSuperInConstructor"/>
<exclude name="CommentDefaultAccessModifier"/>
<exclude name="ConfusingTernary"/>
<exclude name="FinalParameterInAbstractMethod"/>
<exclude name="OnlyOneReturn"/>
<exclude name="PrematureDeclaration"/>
<exclude name="TooManyStaticImports"/>
<exclude name="UselessParentheses"/>
<exclude name="UnnecessaryModifier"/>
<exclude name="UseUnderscoresInNumericLiterals"/>
<!-- to be applied eventually -->
<exclude name="ClassNamingConventions"/>
<exclude name="ControlStatementBraces"/>
<exclude name="FieldDeclarationsShouldBeAtStartOfClass"/>
<exclude name="FieldNamingConventions"/>
<exclude name="FormalParameterNamingConventions"/>
<exclude name="GenericsNaming"/>
<exclude name="LinguisticNaming"/>
<exclude name="LocalVariableCouldBeFinal"/>
<exclude name="LocalVariableNamingConventions"/>
<exclude name="LongVariable"/>
<exclude name="MethodArgumentCouldBeFinal"/>
<exclude name="MethodNamingConventions"/>
<exclude name="PackageCase"/>
<exclude name="ShortClassName"/>
<exclude name="ShortMethodName"/>
<exclude name="ShortVariable"/>
<exclude name="UnnecessaryConstructor"/>
<exclude name="UnnecessaryFullyQualifiedName"/>
<exclude name="UnnecessaryLocalBeforeReturn"/>
<exclude name="UseDiamondOperator"/>
</rule>
<rule ref="category/java/design.xml">
<!-- exclude permanently -->
<exclude name="AvoidCatchingGenericException"/>
<exclude name="CouplingBetweenObjects"/>
<exclude name="DataClass"/>
<exclude name="ExcessiveImports"/>
<exclude name="ExcessivePublicCount"/>
<exclude name="GodClass"/>
<exclude name="LawOfDemeter"/>
<exclude name="LoosePackageCoupling"/>
<exclude name="UseObjectForClearerAPI"/>
<exclude name="SimplifyBooleanReturns"/>
<exclude name="SingularField"/>
<exclude name="TooManyFields"/>
<exclude name="TooManyMethods"/>
<exclude name="UseUtilityClass"/>
<!-- to be applied eventually -->
<exclude name="AvoidRethrowingException"/>
<exclude name="AvoidThrowingRawExceptionTypes"/>
<exclude name="AvoidUncheckedExceptionsInSignatures"/>
<exclude name="ClassWithOnlyPrivateConstructorsShouldBeFinal"/>
<exclude name="CognitiveComplexity"/>
<exclude name="CollapsibleIfStatements"/>
<exclude name="CyclomaticComplexity"/>
<exclude name="ExcessiveClassLength"/>
<exclude name="ExcessiveMethodLength"/>
<exclude name="ExcessiveParameterList"/>
<exclude name="FinalFieldCouldBeStatic"/>
<exclude name="MutableStaticState"/>
<exclude name="NcssCount"/>
<exclude name="NPathComplexity"/>
<exclude name="SignatureDeclareThrowsException"/>
<exclude name="SimplifiedTernary"/>
<exclude name="SimplifyBooleanExpressions"/>
</rule>
<rule ref="category/java/documentation.xml">
<!-- exclude permanently -->
<exclude name="CommentRequired"/>
<exclude name="UncommentedEmptyConstructor"/>
<!-- to be applied eventually -->
<exclude name="UncommentedEmptyMethodBody"/>
</rule>
<rule ref="category/java/errorprone.xml">
<!-- exclude permanently -->
<exclude name="AvoidFieldNameMatchingMethodName"/>
<exclude name="BeanMembersShouldSerialize"/>
<exclude name="DataflowAnomalyAnalysis"/>
<exclude name="UseLocaleWithCaseConversions"/>
<!-- to be applied eventually -->
<exclude name="AssignmentInOperand"/>
<exclude name="AvoidAccessibilityAlteration"/>
<exclude name="AvoidBranchingStatementAsLastInLoop"/>
<exclude name="AvoidCatchingNPE"/>
<exclude name="AvoidCatchingThrowable"/>
<exclude name="AvoidDuplicateLiterals"/>
<exclude name="AvoidFieldNameMatchingTypeName"/>
<exclude name="AvoidInstanceofChecksInCatchClause"/>
<exclude name="AvoidLiteralsInIfCondition"/>
<exclude name="CloseResource"/>
<exclude name="CompareObjectsWithEquals"/>
<exclude name="ConstructorCallsOverridableMethod"/>
<exclude name="DoNotTerminateVM"/>
<exclude name="EmptyCatchBlock"/>
<exclude name="EmptyIfStmt"/>
<exclude name="EmptyStatementNotInLoop"/>
<exclude name="ImplicitSwitchFallThrough"/>
<exclude name="InvalidLogMessageFormat"/>
<exclude name="MissingSerialVersionUID"/>
<exclude name="MoreThanOneLogger"/>
<exclude name="NullAssignment"/>
<exclude name="ReturnEmptyCollectionRatherThanNull"/>
<exclude name="SimpleDateFormatNeedsLocale"/>
<exclude name="SingletonClassReturningNewInstance"/>
<exclude name="UseEqualsToCompareStrings"/>
<exclude name="UseProperClassLoader"/>
</rule>
<!-- uncomment when this rule is applied -->
<!-- <rule ref="category/java/errorprone.xml/AssignmentInOperand">-->
<!-- <properties>-->
<!-- <property name="allowFor" value="true" />-->
<!-- <property name="allowWhile" value="true" />-->
<!-- </properties>-->
<!-- </rule>-->
<rule ref="category/java/multithreading.xml">
<!-- exclude permanently -->
<exclude name="DoNotUseThreads"/>
<exclude name="UseConcurrentHashMap"/>
<!-- to be applied eventually -->
<exclude name="AvoidSynchronizedAtMethodLevel"/>
<exclude name="AvoidUsingVolatile"/>
<exclude name="DontCallThreadRun"/>
</rule>
<rule ref="category/java/performance.xml">
<!-- to be applied eventually -->
<exclude name="AddEmptyString"/>
<exclude name="AppendCharacterWithChar"/>
<exclude name="AvoidFileStream"/>
<exclude name="AvoidInstantiatingObjectsInLoops"/>
<exclude name="BigIntegerInstantiation"/>
<exclude name="ConsecutiveAppendsShouldReuse"/>
<exclude name="ConsecutiveLiteralAppends"/>
<exclude name="InsufficientStringBufferDeclaration"/>
<exclude name="OptimizableToArrayCall"/>
<exclude name="RedundantFieldInitializer"/>
<exclude name="TooFewBranchesForASwitchStatement"/>
<exclude name="UseIndexOfChar"/>
</rule>
<rule ref="category/java/security.xml"/>
<!-- uncomment when this rule is applied -->
<!-- <rule ref="category/java/codestyle.xml/ClassNamingConventions">-->
<!-- <properties>-->
<!-- <property name="classPattern" value="[A-Z][a-zA-Z0-9_]*"/>-->
<!-- <property name="utilityClassPattern" value="[A-Z][a-zA-Z0-9]*"/>-->
<!-- </properties>-->
<!-- </rule>-->
<!-- uncomment when this rule is applied -->
<!-- <rule ref="category/java/codestyle.xml/FieldNamingConventions">-->
<!-- <properties>-->
<!-- <property name="exclusions" value="log|logger|serialVersionUID"/>-->
<!-- </properties>-->
<!-- </rule>-->
<!-- uncomment when this rule is applied -->
<!-- <rule ref="category/java/codestyle.xml/LongVariable">-->
<!-- <properties>-->
<!-- <property name="minimum" value="42"/>-->
<!-- </properties>-->
<!-- </rule>-->
<rule ref="category/java/design.xml/AvoidDeeplyNestedIfStmts">
<properties>
<property name="problemDepth" value="5"/>
</properties>
</rule>
<rule ref="category/java/documentation.xml/CommentSize">
<properties>
<property name="maxLines" value="42"/>
<property name="maxLineLength" value="150"/>
</properties>
</rule>
<!-- uncomment when we apply this rule -->
<!-- <rule ref="category/java/errorprone.xml/CloseResource">-->
<!-- <properties>-->
<!-- <property name="allowedResourceTypes"-->
<!-- value="java.io.ByteArrayOutputStream|java.io.ByteArrayInputStream|java.io.StringWriter|java.io.CharArrayWriter|java.util.stream.Stream|java.util.stream.IntStream|java.util.stream.LongStream|java.util.stream.DoubleStream|okhttp3.Response"/>-->
<!-- </properties>-->
<!-- </rule>-->
</ruleset>