231 lines
10 KiB
XML
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>
|