Skip to content

Instantly share code, notes, and snippets.

@Bala-raj
Created May 17, 2019 13:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Bala-raj/b66e6beaea9626b97a80c4badbc43be3 to your computer and use it in GitHub Desktop.
Save Bala-raj/b66e6beaea9626b97a80c4badbc43be3 to your computer and use it in GitHub Desktop.
PMD Configration
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<ruleset xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
name="AW Java ruleset"
xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">
<description>
Custom ruleset for Java projects
</description>
<rule ref="category/java/bestpractices.xml">
<exclude name="JUnitTestContainsTooManyAsserts"/>
<exclude name="LooseCoupling" />
<exclude name="OneDeclarationPerLine" />
<!-- Duplicate of Checkstyle's UnusedImports, which understands javadoc -->
<exclude name="UnusedImports"/>
<exclude name="UseVarargs"/>
<!-- The new PMD checks for concatenations, it's ok then! -->
<!-- <exclude name="GuardLogStatement"/> -->
<!-- Assume we have few meaningful asserts, making this desired but not required -->
<exclude name="JUnitAssertionsShouldIncludeMessage" />
</rule>
<rule ref="category/java/codestyle.xml">
<!-- Confusing ternary needs special configuration -->
<exclude name="ConfusingTernary"/>
<!-- Checkstyle's FinalParametersCheck forces final vars instead of detecting those that could be final -->
<exclude name="MethodArgumentCouldBeFinal"/>
<exclude name="LocalVariableCouldBeFinal"/>
<!-- old controversial rules -->
<exclude name="AtLeastOneConstructor"/>
<exclude name="AvoidFinalLocalVariable"/>
<exclude name="AvoidPrefixingMethodParameters"/>
<exclude name="AvoidUsingNativeCode"/>
<exclude name="CallSuperInConstructor"/>
<exclude name="DefaultPackage"/>
<exclude name="OnlyOneReturn"/>
<!-- j2ee rules -->
<exclude name="LocalHomeNamingConvention" />
<exclude name="LocalInterfaceSessionNamingConvention" />
<exclude name="MDBAndSessionBeanNamingConvention" />
<exclude name="RemoteInterfaceNamingConvention" />
<exclude name="RemoteSessionInterfaceNamingConvention" />
<!-- Naming rules are disabled - TODO we need to revise them and configure them -->
<exclude name="AbstractNaming"/>
<exclude name="ClassNamingConventions"/>
<exclude name="LongVariable"/>
<exclude name="MethodNamingConventions"/>
<exclude name="MIsLeadingVariableName"/>
<exclude name="ShortClassName"/>
<exclude name="ShortMethodName"/>
<exclude name="ShortVariable"/>
<exclude name="SuspiciousConstantFieldName"/>
<exclude name="VariableNamingConventions"/>
<exclude name="TooManyStaticImports"/>
<!-- braces rules are covered by Checkstyle -->
<exclude name="ForLoopsMustUseBraces"/>
<exclude name="IfElseStmtsMustUseBraces"/>
<exclude name="IfStmtsMustUseBraces"/>
<exclude name="WhileLoopsMustUseBraces"/>
</rule>
<!-- ConfusingTernaryRule should ignore elseif since it creates lots of FPs -->
<rule ref="category/java/codestyle.xml/ConfusingTernary">
<properties>
<property name="ignoreElseIf" value="true"/>
</properties>
</rule>
<rule ref="category/java/design.xml">
<exclude name="CouplingBetweenObjects" />
<exclude name="ExcessiveImports" />
<exclude name="LawOfDemeter" />
<exclude name="LoosePackageCoupling" />
<!-- TODO : review these -->
<exclude name="CyclomaticComplexity" />
<exclude name="ExcessiveClassLength" />
<exclude name="ExcessiveMethodLength" />
<exclude name="ExcessiveParameterList" />
<exclude name="ExcessivePublicCount" />
<exclude name="ModifiedCyclomaticComplexity" />
<exclude name="NcssConstructorCount" />
<exclude name="NcssCount" />
<exclude name="NcssMethodCount" />
<exclude name="NcssTypeCount" />
<exclude name="NPathComplexity" />
<exclude name="StdCyclomaticComplexity" />
<exclude name="TooManyFields" />
<exclude name="TooManyMethods" />
<exclude name="UseObjectForClearerAPI" />
<exclude name="DataClass" />
</rule>
<rule ref="category/java/documentation.xml">
<exclude name="CommentContent"/>
<exclude name="CommentRequired"/>
<exclude name="CommentSize"/>
</rule>
<rule ref="category/java/errorprone.xml">
<exclude name="AvoidDuplicateLiterals"/>
<exclude name="CloneThrowsCloneNotSupportedException"/>
<!-- old controversial rules -->
<exclude name="AssignmentInOperand" />
<exclude name="AvoidAccessibilityAlteration" />
<exclude name="AvoidLiteralsInIfCondition" />
<exclude name="DataflowAnomalyAnalysis" />
<exclude name="DoNotCallGarbageCollectionExplicitly" />
<exclude name="NullAssignment" />
<exclude name="SuspiciousOctalEscape" />
<!-- beans rules -->
<exclude name="BeanMembersShouldSerialize" />
<!-- j2ee rules -->
<exclude name="UseProperClassLoader" />
<exclude name="DoNotCallSystemExit" />
<exclude name="StaticEJBFieldShouldBeFinal" />
<!-- Customized below. -->
<exclude name="EmptyCatchBlock"/>
<!-- We prefer checkstyle's FallThrough -->
<exclude name="MissingBreakInSwitch"/>
</rule>
<rule ref="category/java/errorprone.xml/EmptyCatchBlock">
<properties>
<property name="allowCommentedBlocks" value="true"/>
</properties>
</rule>
<rule ref="category/java/multithreading.xml">
<exclude name="AvoidUsingVolatile"/>
<exclude name="UseConcurrentHashMap"/>
<!-- J2EE rules -->
<exclude name="DoNotUseThreads"/>
</rule>
<rule ref="category/java/performance.xml">
<exclude name="AvoidInstantiatingObjectsInLoops"/>
</rule>
</ruleset>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment