Add PMD and enable quickstart ruleset

PMD allows checking code for violation and quickstart provides a ruleset
which are "rules that are most likely to apply everywhere". Violated
rules are disabled to get started.
This commit is contained in:
Manuel Fuhr 2022-11-13 12:20:38 +01:00
parent 91459dbeb3
commit 9d0703f898
2 changed files with 76 additions and 4 deletions

View file

@ -47,6 +47,16 @@ allprojects {
}
apply plugin: "checkstyle"
apply plugin: "pmd"
pmd {
consoleOutput = true
toolVersion = "6.51.0"
rulesMinimumPriority = 5
ruleSetFiles = files("${rootProject.rootDir}/config/pmd/pmd-ruleset.xml")
ruleSets = []
// ignoreFailures = true
}
}
task clean(type: Delete) {

View file

@ -0,0 +1,62 @@
<?xml version="1.0"?>
<ruleset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Custom Rules"
xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 https://pmd.sourceforge.io/ruleset_2_0_0.xsd">
<description>
BRouter PMD Ruleset
</description>
<rule ref="rulesets/java/quickstart.xml">
<exclude name="AbstractClassWithoutAnyMethod" />
<exclude name="AssignmentInOperand" />
<exclude name="AssignmentToNonFinalStatic" />
<exclude name="AvoidBranchingStatementAsLastInLoop" />
<exclude name="AvoidCatchingThrowable" />
<exclude name="AvoidInstanceofChecksInCatchClause" />
<exclude name="AvoidProtectedFieldInFinalClass" />
<exclude name="AvoidUsingVolatile" />
<exclude name="CloseResource" />
<exclude name="CompareObjectsWithEquals" />
<exclude name="ControlStatementBraces" />
<exclude name="DoNotCallGarbageCollectionExplicitly" />
<exclude name="EmptyCatchBlock" />
<exclude name="EmptyControlStatement" />
<exclude name="ForLoopCanBeForeach" />
<exclude name="LiteralsFirstInComparisons" />
<exclude name="LogicInversion" />
<exclude name="LooseCoupling" />
<exclude name="MissingOverride" />
<exclude name="OneDeclarationPerLine" />
<exclude name="OverrideBothEqualsAndHashcode" />
<exclude name="PreserveStackTrace" />
<exclude name="PrimitiveWrapperInstantiation" />
<exclude name="ReturnEmptyCollectionRatherThanNull" />
<exclude name="SimplifiableTestAssertion" />
<exclude name="SimplifiedTernary" />
<exclude name="SimplifyBooleanReturns" />
<exclude name="SingularField" />
<exclude name="UncommentedEmptyConstructor" />
<exclude name="UncommentedEmptyMethodBody" />
<exclude name="UnnecessaryFullyQualifiedName" />
<exclude name="UnnecessaryImport" />
<exclude name="UnnecessaryModifier" />
<exclude name="UnnecessaryReturn" />
<exclude name="UnusedFormalParameter" />
<exclude name="UnusedLocalVariable" />
<exclude name="UnusedPrivateField" />
<exclude name="UnusedPrivateMethod" />
<exclude name="UseCollectionIsEmpty" />
<exclude name="UseLocaleWithCaseConversions" />
<exclude name="UseNotifyAllInsteadOfNotify" />
<exclude name="UseUtilityClass" />
<exclude name="UselessParentheses" />
<!-- Naming -->
<exclude name="FormalParameterNamingConventions" />
<exclude name="LocalVariableNamingConventions" />
<exclude name="MethodNamingConventions" />
</rule>
</ruleset>