1*2835e6bbSSorin Basca<?xml version="1.0"?> 2*2835e6bbSSorin Basca 3*2835e6bbSSorin Basca<ruleset name="ASM" xmlns="http://pmd.sourceforge.net/ruleset/2.0.0" 4*2835e6bbSSorin Basca xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5*2835e6bbSSorin Basca xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 6*2835e6bbSSorin Basca https://pmd.sourceforge.net/ruleset_2_0_0.xsd"> 7*2835e6bbSSorin Basca <description>PMD rules for ASM</description> 8*2835e6bbSSorin Basca 9*2835e6bbSSorin Basca <rule ref="category/java/bestpractices.xml"> 10*2835e6bbSSorin Basca <!-- Core API is using this on purpose. --> 11*2835e6bbSSorin Basca <exclude name="AbstractClassWithoutAbstractMethod" /> 12*2835e6bbSSorin Basca <!-- Does not work, too many false positives. --> 13*2835e6bbSSorin Basca <exclude name="AccessorMethodGeneration" /> 14*2835e6bbSSorin Basca <!-- Already covered with Checkstyle 'FinalParameters' rule. --> 15*2835e6bbSSorin Basca <exclude name="AvoidReassigningParameters" /> 16*2835e6bbSSorin Basca <!-- Used for legitimate purposes in some Writer classes. --> 17*2835e6bbSSorin Basca <exclude name="AvoidStringBufferField" /> 18*2835e6bbSSorin Basca <!-- Not relevant for ASM. --> 19*2835e6bbSSorin Basca <exclude name="AvoidUsingHardCodedIP" /> 20*2835e6bbSSorin Basca <exclude name="CheckResultSet" /> 21*2835e6bbSSorin Basca <!-- Already covered with Checkstyle 'InterfaceIsType' rule. --> 22*2835e6bbSSorin Basca <exclude name="ConstantsInInterface" /> 23*2835e6bbSSorin Basca <!-- Already covered with Checkstyle 'DefaultComesLast' rule. --> 24*2835e6bbSSorin Basca <exclude name="DefaultLabelNotLastInSwitchStmt" /> 25*2835e6bbSSorin Basca <!-- Not relevant for ASM (no logging and using JUnit 5). --> 26*2835e6bbSSorin Basca <exclude name="GuardLogStatement" /> 27*2835e6bbSSorin Basca <exclude name="JUnit4SuitesShouldUseSuiteAnnotation" /> 28*2835e6bbSSorin Basca <exclude name="JUnit4TestShouldUseAfterAnnotation" /> 29*2835e6bbSSorin Basca <exclude name="JUnit4TestShouldUseBeforeAnnotation" /> 30*2835e6bbSSorin Basca <exclude name="JUnit4TestShouldUseTestAnnotation" /> 31*2835e6bbSSorin Basca <!-- Would give too verbose code. --> 32*2835e6bbSSorin Basca <exclude name="JUnitAssertionsShouldIncludeMessage" /> 33*2835e6bbSSorin Basca <exclude name="JUnitTestContainsTooManyAsserts" /> 34*2835e6bbSSorin Basca <!-- Not relevant for ASM (using JUnit 5). --> 35*2835e6bbSSorin Basca <exclude name="JUnitUseExpected" /> 36*2835e6bbSSorin Basca <!-- Already covered with Checkstyle 'IllegalType' rule. --> 37*2835e6bbSSorin Basca <exclude name="LooseCoupling" /> 38*2835e6bbSSorin Basca <!-- Already covered with google-java-format. --> 39*2835e6bbSSorin Basca <exclude name="OneDeclarationPerLine" /> 40*2835e6bbSSorin Basca <!-- Actually not a best practice. --> 41*2835e6bbSSorin Basca <exclude name="LiteralsFirstInComparisons" /> 42*2835e6bbSSorin Basca <!-- Already covered with Checkstyle 'MissingSwitchDefault' rule. --> 43*2835e6bbSSorin Basca <exclude name="SwitchStmtsShouldHaveDefault" /> 44*2835e6bbSSorin Basca <!-- Already covered with google-java-format. --> 45*2835e6bbSSorin Basca <exclude name="UnusedImports" /> 46*2835e6bbSSorin Basca <!-- Too many false positives. --> 47*2835e6bbSSorin Basca <exclude name="UseVarargs" /> 48*2835e6bbSSorin Basca </rule> 49*2835e6bbSSorin Basca <rule ref="category/java/bestpractices.xml/ArrayIsStoredDirectly"> 50*2835e6bbSSorin Basca <properties> 51*2835e6bbSSorin Basca <property name="violationSuppressXPath" 52*2835e6bbSSorin Basca value="//MethodDeclaration[@Private='true' or 53*2835e6bbSSorin Basca @PackagePrivate='true']" /> 54*2835e6bbSSorin Basca </properties> 55*2835e6bbSSorin Basca </rule> 56*2835e6bbSSorin Basca <rule ref="category/java/bestpractices.xml/MethodReturnsInternalArray"> 57*2835e6bbSSorin Basca <properties> 58*2835e6bbSSorin Basca <property name="violationSuppressXPath" 59*2835e6bbSSorin Basca value="//MethodDeclaration[@Private='true' or 60*2835e6bbSSorin Basca @PackagePrivate='true']" /> 61*2835e6bbSSorin Basca </properties> 62*2835e6bbSSorin Basca </rule> 63*2835e6bbSSorin Basca <rule ref="category/java/bestpractices.xml/ForLoopVariableCount"> 64*2835e6bbSSorin Basca <properties> 65*2835e6bbSSorin Basca <property name="maximumVariables" value="2" /> 66*2835e6bbSSorin Basca </properties> 67*2835e6bbSSorin Basca </rule> 68*2835e6bbSSorin Basca 69*2835e6bbSSorin Basca <rule ref="category/java/errorprone.xml"> 70*2835e6bbSSorin Basca <!-- Do not want this rule. --> 71*2835e6bbSSorin Basca <exclude name="AssignmentInOperand" /> 72*2835e6bbSSorin Basca <!-- Not relevant for ASM (no BigDecimal). --> 73*2835e6bbSSorin Basca <exclude name="AvoidDecimalLiteralsInBigDecimalConstructor" /> 74*2835e6bbSSorin Basca <!-- Do not want these rules. --> 75*2835e6bbSSorin Basca <exclude name="AvoidDuplicateLiterals" /> 76*2835e6bbSSorin Basca <exclude name="AvoidFieldNameMatchingMethodName" /> 77*2835e6bbSSorin Basca <exclude name="AvoidLiteralsInIfCondition" /> 78*2835e6bbSSorin Basca <!-- Too many false positives. --> 79*2835e6bbSSorin Basca <exclude name="CompareObjectsWithEquals" /> 80*2835e6bbSSorin Basca <!-- Does not work, too many false positives. --> 81*2835e6bbSSorin Basca <exclude name="DataflowAnomalyAnalysis" /> 82*2835e6bbSSorin Basca <!-- Not relevant for ASM. --> 83*2835e6bbSSorin Basca <exclude name="DoNotHardCodeSDCard" /> 84*2835e6bbSSorin Basca <exclude name="DontImportSun" /> 85*2835e6bbSSorin Basca <!-- Already covered with Checkstyle 'NoFinalizer' rule. --> 86*2835e6bbSSorin Basca <exclude name="FinalizeDoesNotCallSuperFinalize" /> 87*2835e6bbSSorin Basca <exclude name="FinalizeOnlyCallsSuperFinalize" /> 88*2835e6bbSSorin Basca <exclude name="FinalizeOverloaded" /> 89*2835e6bbSSorin Basca <exclude name="FinalizeShouldBeProtected" /> 90*2835e6bbSSorin Basca <!-- Not relevant for ASM (no logging and using JUnit 5). --> 91*2835e6bbSSorin Basca <exclude name="JUnitSpelling" /> 92*2835e6bbSSorin Basca <exclude name="JUnitStaticSuite" /> 93*2835e6bbSSorin Basca <exclude name="LoggerIsNotStaticFinal" /> 94*2835e6bbSSorin Basca <exclude name="MoreThanOneLogger" /> 95*2835e6bbSSorin Basca <!-- Needed to implement custom data structures such as linked lists. --> 96*2835e6bbSSorin Basca <exclude name="NullAssignment" /> 97*2835e6bbSSorin Basca <!-- Not relevant for ASM (no logging, no dates, no EJB). --> 98*2835e6bbSSorin Basca <exclude name="ProperLogger" /> 99*2835e6bbSSorin Basca <exclude name="SimpleDateFormatNeedsLocale" /> 100*2835e6bbSSorin Basca <exclude name="StaticEJBFieldShouldBeFinal" /> 101*2835e6bbSSorin Basca <exclude name="UseProperClassLoader" /> 102*2835e6bbSSorin Basca </rule> 103*2835e6bbSSorin Basca <rule ref="category/java/errorprone.xml/ReturnEmptyCollectionRatherThanNull"> 104*2835e6bbSSorin Basca <properties> 105*2835e6bbSSorin Basca <property name="violationSuppressXPath" 106*2835e6bbSSorin Basca value="//MethodDeclaration[@Private='true']"/> 107*2835e6bbSSorin Basca </properties> 108*2835e6bbSSorin Basca </rule> 109*2835e6bbSSorin Basca 110*2835e6bbSSorin Basca <rule ref="category/java/performance.xml"> 111*2835e6bbSSorin Basca <!-- Too many false positives. --> 112*2835e6bbSSorin Basca <exclude name="AvoidInstantiatingObjectsInLoops" /> 113*2835e6bbSSorin Basca <!-- Shorts can be decrease memory use, without decreasing performance. --> 114*2835e6bbSSorin Basca <exclude name="AvoidUsingShortType" /> 115*2835e6bbSSorin Basca <!-- Not relevant for ASM (no BigInteger). --> 116*2835e6bbSSorin Basca <exclude name="BigIntegerInstantiation" /> 117*2835e6bbSSorin Basca <!-- Does not work, too many false positives. --> 118*2835e6bbSSorin Basca <exclude name="InsufficientStringBufferDeclaration" /> 119*2835e6bbSSorin Basca </rule> 120*2835e6bbSSorin Basca</ruleset> 121*2835e6bbSSorin Basca 122