xref: /aosp_15_r20/external/ow2-asm/tools/pmd.xml (revision 2835e6bb194a25e32dae2cc0628d8f988b82bfc0)
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