mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
Checkstyle naming conventions were changed to allow most of what's in wpimath. Naming rules were disabled completely in wpimath since almost all suppressions are for math notation.
126 lines
4.8 KiB
XML
126 lines
4.8 KiB
XML
<?xml version="1.0"?>
|
|
<ruleset name="WPILibRuleset"
|
|
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 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">
|
|
|
|
<description>PMD Ruleset for WPILib</description>
|
|
|
|
<exclude-pattern>.*/*JNI.*</exclude-pattern>
|
|
<exclude-pattern>.*/*IntegrationTests.*</exclude-pattern>
|
|
|
|
<rule ref="category/java/bestpractices.xml">
|
|
<exclude name="AccessorClassGeneration" />
|
|
<exclude name="AccessorMethodGeneration" />
|
|
<exclude name="AvoidPrintStackTrace" />
|
|
<exclude name="AvoidReassigningCatchVariables" />
|
|
<exclude name="AvoidReassigningParameters" />
|
|
<exclude name="AvoidUsingHardCodedIP" />
|
|
<exclude name="ConstantsInInterface" />
|
|
<exclude name="JUnitAssertionsShouldIncludeMessage" />
|
|
<exclude name="JUnitTestContainsTooManyAsserts" />
|
|
<exclude name="JUnitTestsShouldIncludeAssert" />
|
|
<exclude name="JUnit4TestShouldUseAfterAnnotation" />
|
|
<exclude name="JUnit4TestShouldUseBeforeAnnotation" />
|
|
<exclude name="JUnit4TestShouldUseTestAnnotation" />
|
|
<exclude name="LooseCoupling" />
|
|
<exclude name="PreserveStackTrace" />
|
|
<exclude name="ReplaceHashtableWithMap" />
|
|
<exclude name="ReplaceVectorWithList" />
|
|
<exclude name="SwitchStmtsShouldHaveDefault" />
|
|
<exclude name="SystemPrintln" />
|
|
<exclude name="UseVarargs" />
|
|
</rule>
|
|
<rule ref="category/java/bestpractices.xml/UnusedPrivateMethod">
|
|
<properties>
|
|
<property name="violationSuppressRegex"
|
|
value=".*'.*Arguments\(\)'.*" />
|
|
</properties>
|
|
</rule>
|
|
|
|
<rule ref="category/java/design.xml">
|
|
<exclude name="AvoidThrowingRawExceptionTypes" />
|
|
<exclude name="CognitiveComplexity" />
|
|
<exclude name="CyclomaticComplexity" />
|
|
<exclude name="DataClass" />
|
|
<exclude name="ExcessiveClassLength" />
|
|
<exclude name="ExcessiveImports" />
|
|
<exclude name="ExcessiveMethodLength" />
|
|
<exclude name="ExcessiveParameterList" />
|
|
<exclude name="ExcessivePublicCount" />
|
|
<exclude name="GodClass" />
|
|
<exclude name="LawOfDemeter" />
|
|
<exclude name="LoosePackageCoupling" />
|
|
<exclude name="NPathComplexity" />
|
|
<exclude name="NcssConstructorCount" />
|
|
<exclude name="NcssCount" />
|
|
<exclude name="NcssMethodCount" />
|
|
<exclude name="TooManyFields" />
|
|
<exclude name="TooManyMethods" />
|
|
</rule>
|
|
|
|
<rule ref="category/java/errorprone.xml">
|
|
<exclude name="AssignmentToNonFinalStatic" />
|
|
<exclude name="AvoidCatchingThrowable" />
|
|
<exclude name="AvoidDuplicateLiterals" />
|
|
<exclude name="AvoidLiteralsInIfCondition" />
|
|
<exclude name="BeanMembersShouldSerialize" />
|
|
<exclude name="CloseResource" />
|
|
<exclude name="ConstructorCallsOverridableMethod" />
|
|
<exclude name="DataflowAnomalyAnalysis" />
|
|
<exclude name="DoNotTerminateVM" />
|
|
<exclude name="EmptyCatchBlock" />
|
|
<exclude name="EmptyWhileStmt" />
|
|
<exclude name="FinalizeDoesNotCallSuperFinalize" />
|
|
<exclude name="JUnitSpelling" />
|
|
<exclude name="MissingSerialVersionUID" />
|
|
<exclude name="NullAssignment" />
|
|
</rule>
|
|
|
|
<rule ref="category/java/multithreading.xml">
|
|
<exclude name="AvoidSynchronizedAtMethodLevel" />
|
|
<exclude name="AvoidUsingVolatile" />
|
|
<exclude name="DoNotUseThreads" />
|
|
<exclude name="UseConcurrentHashMap" />
|
|
</rule>
|
|
|
|
<rule ref="category/java/performance.xml">
|
|
<exclude name="AvoidUsingShortType" />
|
|
<exclude name="AvoidInstantiatingObjectsInLoops" />
|
|
</rule>
|
|
|
|
<rule name="UnnecessaryCastRule" language="java"
|
|
message="Avoid unnecessary casts"
|
|
class="net.sourceforge.pmd.lang.java.rule.codestyle.UnnecessaryCastRule"
|
|
externalInfoUrl="https://github.com/pmd/pmd/blob/master/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/codestyle/UnnecessaryCastRule.java" />
|
|
|
|
<!-- Custom Rules -->
|
|
<rule name="UseRequireNonNull"
|
|
message="Use Objects.requireNonNull() instead of throwing a NullPointerException yourself."
|
|
language="java" class="net.sourceforge.pmd.lang.rule.XPathRule">
|
|
<description>Use Objects.requireNonNull() instead of throwing a
|
|
NullPointerException yourself.</description>
|
|
<properties>
|
|
<property name="xpath">
|
|
<value>
|
|
<![CDATA[
|
|
//IfStatement[child::Expression//NullLiteral]/Statement//ThrowStatement/Expression/PrimaryExpression/PrimaryPrefix/AllocationExpression/ClassOrInterfaceType[@Image='NullPointerException']
|
|
]]>
|
|
</value>
|
|
</property>
|
|
</properties>
|
|
<priority>3</priority>
|
|
<example>
|
|
<![CDATA[
|
|
public class Example {
|
|
public Example(Object example) {
|
|
if (example == null) {
|
|
throw new NullPointerException();
|
|
}
|
|
}
|
|
}
|
|
]]>
|
|
</example>
|
|
</rule>
|
|
</ruleset>
|