##### Overview

- Download PMD 3.7
- What's new in PMD 3.7
- PMD in the news
- PMD-related products and books
- Best practices
- Future directions
- Similar projects
- Credits
- License
- What does 'PMD' mean?

##### Usage

- Installation
- Command line usage
- Ant task usage
- Maven plugin usage
- IDE plugin usage
- Suppressing warnings
- Finding duplicated code
- JSP support

##### Customizing PMD

- Compiling PMD
- How to write a rule
- Writing XPath rules
- How to make a rule set
- How it works

##### For example

- Run PMD on a Sourceforge project

##### Rule Sets

- Index
- Basic
- Braces
- Code Size
- Clone
- Controversial
- Coupling
- Design
- Finalizers
- Import Statements
- J2EE
- Javabeans
- JUnit Tests
- Logging (Java)
- Logging (Jakarta)
- Migrating
- Naming
- Optimizations
- Strict Exceptions
- Strings
- Sun Security
- Unused Code
- Java Server Pages
- Java Server Faces

##### Project Documentation

- About PMD
- Project Info
- Project Reports
  - JavaDocs
  - JavaDoc Report
  - Source Xref
  - Test Xref
  - Unit Tests
  - Clover
  - File Activity
  - Developer Activity
  - FAQs
  - PMD Report
- Development Process

## Summary

[ summary] [ package list] [ test cases]

Tests | Errors | Failures | Success rate | Time(s)
--- | --- | --- | --- | ---
712 | 0 | 0 | 100.00% | 390.44

Note: failuresare anticipated and checked for with assertions while errorsare unanticipated.

## Package List

[ summary] [ package list] [ test cases]

Package | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
test.net.sourceforge.pmd.rules | 108 | 0 | 0 | 100.00% | 149.34
test.net.sourceforge.pmd.jaxen | 16 | 0 | 0 | 100.00% | 4.94
test.net.sourceforge.pmd | 95 | 0 | 0 | 100.00% | 10.88
test.net.sourceforge.pmd.rules.junit | 10 | 0 | 0 | 100.00% | 16.08
test.net.sourceforge.pmd.rules.design | 30 | 0 | 0 | 100.00% | 38.90
test.net.sourceforge.pmd.rules.strings | 15 | 0 | 0 | 100.00% | 22.10
test.net.sourceforge.pmd.cpd | 24 | 0 | 0 | 100.00% | 5.27
test.net.sourceforge.pmd.jsp.ast | 16 | 0 | 0 | 100.00% | 2.70
test.net.sourceforge.pmd.ast | 112 | 0 | 0 | 100.00% | 23.86
test.net.sourceforge.pmd.rules.braces | 4 | 0 | 0 | 100.00% | 6.46
test.net.sourceforge.pmd.rules.strictexception | 7 | 0 | 0 | 100.00% | 8.55
test.net.sourceforge.pmd.rules.logging.jakartacommons | 2 | 0 | 0 | 100.00% | 3.38
test.net.sourceforge.pmd.dfa | 46 | 0 | 0 | 100.00% | 9.16
test.net.sourceforge.pmd.rules.finalize | 4 | 0 | 0 | 100.00% | 6.45
test.net.sourceforge.pmd.jsp.rules | 9 | 0 | 0 | 100.00% | 10.65
test.net.sourceforge.pmd.rules.clone | 3 | 0 | 0 | 100.00% | 4.54
test.net.sourceforge.pmd.rules.optimization | 8 | 0 | 0 | 100.00% | 13.61
test.net.sourceforge.pmd.symboltable | 71 | 0 | 0 | 100.00% | 13.74
test.net.sourceforge.pmd.stat | 88 | 0 | 0 | 100.00% | 7.20
test.net.sourceforge.pmd.rules.imports | 8 | 0 | 0 | 100.00% | 5.60
test.net.sourceforge.pmd.rules.logging.java | 4 | 0 | 0 | 100.00% | 6.05
test.net.sourceforge.pmd.rules.migrating | 6 | 0 | 0 | 100.00% | 8.94
test.net.sourceforge.pmd.rules.javabeans | 3 | 0 | 0 | 100.00% | 3.11
test.net.sourceforge.pmd.util | 6 | 0 | 0 | 100.00% | 1.02
test.net.sourceforge.pmd.rules.j2ee | 1 | 0 | 0 | 100.00% | 1.56
test.net.sourceforge.pmd.rules.sunsecure | 2 | 0 | 0 | 100.00% | 3.00
test.net.sourceforge.pmd.renderers | 7 | 0 | 0 | 100.00% | 2.34
test.net.sourceforge.pmd.ant | 7 | 0 | 0 | 100.00% | 1.01

Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers.

### test.net.sourceforge.pmd.rules

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| AvoidDollarSignsRuleTest | 1 | 0 | 0 | 100.00% | 1.563
| MissingStaticMethodInNonInstantiatableClassTest | 1 | 0 | 0 | 100.00% | 1.852
| AvoidFieldNameMatchingTypeNameTest | 1 | 0 | 0 | 100.00% | 1.339
| BadComparisonTest | 1 | 0 | 0 | 100.00% | 1.758
| XPathRuleTest | 2 | 0 | 0 | 100.00% | 1.319
| MisplacedNullCheckTest | 1 | 0 | 0 | 100.00% | 1.769
| DontImportSunTest | 1 | 0 | 0 | 100.00% | 1.409
| ShortVariableRuleTest | 1 | 0 | 0 | 100.00% | 1.725
| CloseResourceTest | 1 | 0 | 0 | 100.00% | 1.645
| UseNotifyAllInsteadOfNotifyTest | 1 | 0 | 0 | 100.00% | 1.830
| AvoidFieldNameMatchingMethodNameTest | 1 | 0 | 0 | 100.00% | 1.461
| UnnecessaryTemporariesTest | 1 | 0 | 0 | 100.00% | 1.499
| UseArrayListInsteadOfVectorTest | 1 | 0 | 0 | 100.00% | 1.762
| UncommentedEmptyConstructorRuleTest | 2 | 0 | 0 | 100.00% | 2.066
| InstantiationToGetClassRuleTest | 1 | 0 | 0 | 100.00% | 1.685
| EmptySwitchStmtRuleTest | 1 | 0 | 0 | 100.00% | 1.597
| AbstractNamingTest | 1 | 0 | 0 | 100.00% | 1.446
| AvoidThreadGroupTest | 1 | 0 | 0 | 100.00% | 1.679
| FinalizeShouldBeProtectedRuleTest | 1 | 0 | 0 | 100.00% | 1.602
| DefaultLabelNotLastInSwitchStmtRuleTest | 1 | 0 | 0 | 100.00% | 1.771
| UnnecessaryReturnTest | 1 | 0 | 0 | 100.00% | 1.650
| DefaultPackageTest | 1 | 0 | 0 | 100.00% | 1.637
| AtLeastOneConstructorRuleTest | 1 | 0 | 0 | 100.00% | 1.538
| SimplifyBooleanReturnsTest | 1 | 0 | 0 | 100.00% | 1.265
| SimplifyConditionalTest | 1 | 0 | 0 | 100.00% | 1.845
| ExcessivePublicCountTest | 2 | 0 | 0 | 100.00% | 1.030
| CallSuperInConstructorTest | 2 | 0 | 0 | 100.00% | 1.706
| ConstructorCallsOverridableMethodTest | 2 | 0 | 0 | 100.00% | 1.784
| CyclomaticComplexityTest | 4 | 0 | 0 | 100.00% | 1.751
| AbstractClassWithoutAbstractMethodTest | 1 | 0 | 0 | 100.00% | 1.609
| NonStaticInitializerRuleTest | 1 | 0 | 0 | 100.00% | 1.537
| EmptyTryBlockRuleTest | 1 | 0 | 0 | 100.00% | 1.686
| FinalFieldCouldBeStaticRuleTest | 1 | 0 | 0 | 100.00% | 1.725
| EmptySynchronizedBlockRuleTest | 1 | 0 | 0 | 100.00% | 1.585
| UnnecessaryConstructorTest | 1 | 0 | 0 | 100.00% | 1.873
| ShortMethodNameTest | 1 | 0 | 0 | 100.00% | 1.595
| OptimizableToArrayCallTest | 1 | 0 | 0 | 100.00% | 1.715
| UnusedLocalVariableTest | 1 | 0 | 0 | 100.00% | 1.792
| MethodWithSameNameAsEnclosingClassRuleTest | 1 | 0 | 0 | 100.00% | 1.344
| UncommentedEmptyMethodRuleTest | 1 | 0 | 0 | 100.00% | 1.663
| UselessOperationOnImmutableTest | 1 | 0 | 0 | 100.00% | 1.910
| NonCaseLabelInSwitchStatementRuleTest | 1 | 0 | 0 | 100.00% | 1.947
| MissingBreakInSwitchTest | 1 | 0 | 0 | 100.00% | 1.781
| JumbledIncrementerRuleTest | 1 | 0 | 0 | 100.00% | 1.982
| AvoidDeeplyNestedIfStmtsRuleTest | 1 | 0 | 0 | 100.00% | 1.706
| VariableNamingConventionsTest | 3 | 0 | 0 | 100.00% | 1.787
| OverrideBothEqualsAndHashcodeTest | 1 | 0 | 0 | 100.00% | 1.856
| UnusedNullCheckInEqualsTest | 1 | 0 | 0 | 100.00% | 1.730
| UselessAssignmentRuleTest | 1 | 0 | 0 | 100.00% | 0.388
| ExcessiveImportsTest | 1 | 0 | 0 | 100.00% | 1.143
| ReturnFromFinallyBlockTest | 1 | 0 | 0 | 100.00% | 1.936
| EqualsNullRuleTest | 1 | 0 | 0 | 100.00% | 1.741
| ForLoopShouldBeWhileLoopRuleTest | 2 | 0 | 0 | 100.00% | 1.752
| EmptyWhileStmtRuleTest | 1 | 0 | 0 | 100.00% | 1.602
| EmptyIfStmtRuleTest | 1 | 0 | 0 | 100.00% | 1.658
| SwitchStmtsShouldHaveDefaultRuleTest | 1 | 0 | 0 | 100.00% | 1.745
| UnconditionalIfStatementRuleTest | 1 | 0 | 0 | 100.00% | 1.678
| UnusedFormalParameterRuleTest | 2 | 0 | 0 | 100.00% | 1.419
| UnusedPrivateMethodRuleTest | 1 | 0 | 0 | 100.00% | 1.744
| SuspiciousOctalEscapeTest | 1 | 0 | 0 | 100.00% | 1.290
| MethodNamingConventionsTest | 1 | 0 | 0 | 100.00% | 1.138
| EmptyStaticInitializerRuleTest | 1 | 0 | 0 | 100.00% | 1.524
| IdempotentOperationsTest | 1 | 0 | 0 | 100.00% | 1.284
| BooleanInstantiationRuleTest | 1 | 0 | 0 | 100.00% | 1.693
| AccessorClassGenerationTest | 1 | 0 | 0 | 100.00% | 1.539
| SuspiciousConstantFieldNameTest | 1 | 0 | 0 | 100.00% | 1.553
| AvoidNonConstructorMethodsWithClassNameTest | 1 | 0 | 0 | 100.00% | 1.384
| EmptyFinallyBlockRuleTest | 1 | 0 | 0 | 100.00% | 1.819
| EmptyFinalizerRuleTest | 1 | 0 | 0 | 100.00% | 1.513
| ClassCastExceptionWithToArrayTest | 1 | 0 | 0 | 100.00% | 1.743
| AvoidReassigningParametersTest | 1 | 0 | 0 | 100.00% | 1.629
| UnnecessaryFinalModifierTest | 1 | 0 | 0 | 100.00% | 1.658
| DoubleCheckedLockingTest | 2 | 0 | 0 | 100.00% | 1.696
| ClassNamingConventionsTest | 1 | 0 | 0 | 100.00% | 1.096
| CouplingBetweenObjectsTest | 1 | 0 | 0 | 100.00% | 1.349
| AvoidDecimalLiteralsInBigDecimalConstructorTest | 1 | 0 | 0 | 100.00% | 1.592
| UnusedModifierRuleTest | 1 | 0 | 0 | 100.00% | 1.469
| LongVariableRuleTest | 2 | 0 | 0 | 100.00% | 1.744
| SingularFieldRuleTest | 1 | 0 | 0 | 100.00% | 1.937
| UselessOverridingMethodTest | 1 | 0 | 0 | 100.00% | 1.677
| PackageCaseTest | 1 | 0 | 0 | 100.00% | 1.505
| NoPackageTest | 1 | 0 | 0 | 100.00% | 1.446
| MisleadingVariableNameTest | 1 | 0 | 0 | 100.00% | 1.610
| AssignmentInOperandTest | 1 | 0 | 0 | 100.00% | 1.717
| SimplifyBooleanExpressionsRuleTest | 1 | 0 | 0 | 100.00% | 1.813
| UnnecessaryParenthesesTest | 1 | 0 | 0 | 100.00% | 1.655
| SuspiciousEqualsMethodNameRuleTest | 1 | 0 | 0 | 100.00% | 1.669
| SuspiciousHashcodeMethodNameRuleTest | 1 | 0 | 0 | 100.00% | 1.626
| EmptyCatchBlockRuleTest | 3 | 0 | 0 | 100.00% | 2.194
| UnusedPrivateFieldRuleTest | 1 | 0 | 0 | 100.00% | 1.784
| SimpleDateFormatNeedsLocaleRuleTest | 1 | 0 | 0 | 100.00% | 1.645
| UseLocaleWithCaseConversionsRuleTest | 1 | 0 | 0 | 100.00% | 1.732

### test.net.sourceforge.pmd.jaxen

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| DocumentNavigatorTest | 11 | 0 | 0 | 100.00% | 1.976
| RegexpAcceptanceTest | 1 | 0 | 0 | 100.00% | 1.465
| AttributeAxisIteratorTest | 1 | 0 | 0 | 100.00% | 0.486
| AttributeTest | 1 | 0 | 0 | 100.00% | 0.500
| MatchesFunctionTest | 2 | 0 | 0 | 100.00% | 0.513

### test.net.sourceforge.pmd

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| SourceTypeDiscovererTest | 3 | 0 | 0 | 100.00% | 0.481
| AbstractRuleTest | 13 | 0 | 0 | 100.00% | 0.677
| ReadableDurationTest | 5 | 0 | 0 | 100.00% | 0.460
| RuleSetFactoryTest | 16 | 0 | 0 | 100.00% | 1.477
| RuleContextTest | 2 | 0 | 0 | 100.00% | 0.479
| RuleViolationTest | 1 | 0 | 0 | 100.00% | 0.398
| SimpleRuleSetNameMapperTest | 7 | 0 | 0 | 100.00% | 0.451
| RuleSetTest | 14 | 0 | 0 | 100.00% | 1.031
| ExcludeLinesTest | 5 | 0 | 0 | 100.00% | 1.389
| SuppressWarningsTest | 7 | 0 | 0 | 100.00% | 1.389
| ReportTest | 5 | 0 | 0 | 100.00% | 1.205
| FileSelectorTest | 4 | 0 | 0 | 100.00% | 0.450
| CommandLineOptionsTest | 12 | 0 | 0 | 100.00% | 0.546
| ExternalRuleIDTest | 1 | 0 | 0 | 100.00% | 0.446

### test.net.sourceforge.pmd.rules.junit

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| JUnitSpellingRuleTest | 1 | 0 | 0 | 100.00% | 1.539
| JUnitStaticSuiteRuleTest | 1 | 0 | 0 | 100.00% | 1.510
| UnnecessaryBooleanAssertionTest | 1 | 0 | 0 | 100.00% | 1.806
| JUnitAssertionsShouldIncludeMessageTest | 1 | 0 | 0 | 100.00% | 1.595
| SimplifyBooleanAssertionTest | 1 | 0 | 0 | 100.00% | 1.626
| UseAssertEqualsInsteadOfAssertTrueTest | 1 | 0 | 0 | 100.00% | 1.668
| UseAssertSameInsteadOfAssertTrueTest | 1 | 0 | 0 | 100.00% | 1.831
| TestClassWithoutTestCasesTest | 1 | 0 | 0 | 100.00% | 1.281
| JUnitTestsShouldContainAssertsTest | 1 | 0 | 0 | 100.00% | 1.621
| UseAssertNullInsteadOfAssertTrueTest | 1 | 0 | 0 | 100.00% | 1.599

### test.net.sourceforge.pmd.rules.design

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| UnnecessaryLocalBeforeReturnRuleTest | 1 | 0 | 0 | 100.00% | 1.558
| PositionLiteralsFirstInComparisonsTest | 1 | 0 | 0 | 100.00% | 1.829
| PreserveStackTraceTest | 1 | 0 | 0 | 100.00% | 2.076
| AvoidConstantsInterfaceTest | 1 | 0 | 0 | 100.00% | 1.671
| EmptyStatementNotInLoopRuleTest | 1 | 0 | 0 | 100.00% | 1.677
| ConfusingTernaryRuleTest | 1 | 0 | 0 | 100.00% | 1.482
| LooseCouplingTest | 1 | 0 | 0 | 100.00% | 1.440
| PositionalIteratorRuleTest | 3 | 0 | 0 | 100.00% | 1.321
| NullAssignmentRuleTest | 1 | 0 | 0 | 100.00% | 1.579
| AssignmentToNonFinalStaticTest | 1 | 0 | 0 | 100.00% | 1.498
| SwitchDensityTest | 1 | 0 | 0 | 100.00% | 1.393
| AvoidInstanceofChecksInCatchClauseTest | 1 | 0 | 0 | 100.00% | 1.753
| UseSingletonTest | 2 | 0 | 0 | 100.00% | 1.668
| NonThreadSafeSingletonTest | 1 | 0 | 0 | 100.00% | 1.860
| LongClassRuleTest | 2 | 0 | 0 | 100.00% | 1.466
| ImmutableFieldTest | 1 | 0 | 0 | 100.00% | 1.914
| TooManyFieldsTest | 2 | 0 | 0 | 100.00% | 1.713
| OnlyOneReturnRuleTest | 1 | 0 | 0 | 100.00% | 1.494
| CollapsibleIfStatementsTest | 1 | 0 | 0 | 100.00% | 1.733
| LongParameterListRuleTest | 1 | 0 | 0 | 100.00% | 1.290
| CompareObjectsWithEqualsTest | 1 | 0 | 0 | 100.00% | 1.675
| UnsynchronizedStaticDateFormatterTest | 1 | 0 | 0 | 100.00% | 1.601
| AvoidProtectedFieldInFinalClassRuleTest | 1 | 0 | 0 | 100.00% | 1.580
| ExcessiveMethodLengthTest | 2 | 0 | 0 | 100.00% | 1.628

### test.net.sourceforge.pmd.rules.strings

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| InefficientStringBufferingTest | 1 | 0 | 0 | 100.00% | 2.076
| StringInstantiationRuleTest | 1 | 0 | 0 | 100.00% | 1.582
| UseIndexOfCharTest | 1 | 0 | 0 | 100.00% | 1.622
| UseStringBufferLengthTest | 1 | 0 | 0 | 100.00% | 1.708
| InefficientEmptyStringCheckTest | 1 | 0 | 0 | 100.00% | 1.742
| ConsecutiveLiteralAppendsTest | 1 | 0 | 0 | 100.00% | 3.832
| StringToStringRuleTest | 1 | 0 | 0 | 100.00% | 1.579
| AvoidDuplicateLiteralsRuleTest | 5 | 0 | 0 | 100.00% | 1.641
| AppendCharacterWithCharTest | 1 | 0 | 0 | 100.00% | 1.666
| InsufficientStringBufferDeclarationTest | 1 | 0 | 0 | 100.00% | 3.100
| UnnecessaryCaseChangeRuleTest | 1 | 0 | 0 | 100.00% | 1.553

### test.net.sourceforge.pmd.cpd

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| TokenEntryTest | 1 | 0 | 0 | 100.00% | 0.466
| AnyTokenizerTest | 1 | 0 | 0 | 100.00% | 0.479
| LanguageFactoryTest | 1 | 0 | 0 | 100.00% | 0.483
| FileReporterTest | 4 | 0 | 0 | 100.00% | 0.470
| XMLRendererTest | 3 | 0 | 0 | 100.00% | 0.559
| MatchTest | 2 | 0 | 0 | 100.00% | 0.470
| MatchAlgorithmTest | 2 | 0 | 0 | 100.00% | 0.623
| CPPTokenizerTest | 4 | 0 | 0 | 100.00% | 0.555
| SourceCodeTest | 1 | 0 | 0 | 100.00% | 0.580
| JavaTokensTokenizerTest | 5 | 0 | 0 | 100.00% | 0.585

### test.net.sourceforge.pmd.jsp.ast

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| JspDocStyleTest | 6 | 0 | 0 | 100.00% | 0.831
| JspPageStyleTest | 9 | 0 | 0 | 100.00% | 0.719
| XPathJspRuleTest | 1 | 0 | 0 | 100.00% | 1.149

### test.net.sourceforge.pmd.ast

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| MethodDeclTest | 8 | 0 | 0 | 100.00% | 1.152
| ASTAnnotationTest | 2 | 0 | 0 | 100.00% | 1.119
| AccessNodeTest | 13 | 0 | 0 | 100.00% | 1.094
| ASTLocalVariableDeclarationTest | 3 | 0 | 0 | 100.00% | 1.023
| ASTVariableDeclaratorIdTest | 2 | 0 | 0 | 100.00% | 1.169
| ASTLiteralTest | 2 | 0 | 0 | 100.00% | 1.214
| ASTAssignmentOperatorTest | 3 | 0 | 0 | 100.00% | 1.226
| JDKVersionTest | 24 | 0 | 0 | 100.00% | 1.425
| ClassDeclTest | 5 | 0 | 0 | 100.00% | 1.085
| SimpleNodeTest | 20 | 0 | 0 | 100.00% | 1.615
| ASTFieldDeclarationTest | 5 | 0 | 0 | 100.00% | 0.983
| ParserCornersTest | 1 | 0 | 0 | 100.00% | 0.973
| EncodingTest | 1 | 0 | 0 | 100.00% | 0.401
| ASTThrowStatementTest | 2 | 0 | 0 | 100.00% | 1.204
| FieldDeclTest | 7 | 0 | 0 | 100.00% | 1.148
| ASTBooleanLiteralTest | 2 | 0 | 0 | 100.00% | 1.162
| ASTMethodDeclarationTest | 1 | 0 | 0 | 100.00% | 0.498
| ASTPrimarySuffixTest | 2 | 0 | 0 | 100.00% | 1.298
| ASTInitializerTest | 1 | 0 | 0 | 100.00% | 1.209
| ASTSwitchLabelTest | 2 | 0 | 0 | 100.00% | 1.261
| ASTImportDeclarationTest | 4 | 0 | 0 | 100.00% | 1.105
| ASTBlockStatementTest | 2 | 0 | 0 | 100.00% | 0.492

### test.net.sourceforge.pmd.rules.braces

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| WhileLoopsMustUseBracesTest | 1 | 0 | 0 | 100.00% | 1.508
| ForLoopsMustUseBracesTest | 1 | 0 | 0 | 100.00% | 1.634
| IfStmtsMustUseBracesRuleTest | 1 | 0 | 0 | 100.00% | 1.553
| IfElseStmtsMustUseBracesTest | 1 | 0 | 0 | 100.00% | 1.761

### test.net.sourceforge.pmd.rules.strictexception

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| ExceptionAsFlowControlTest | 1 | 0 | 0 | 100.00% | 1.437
| AvoidCatchingNPETest | 1 | 0 | 0 | 100.00% | 1.553
| AvoidThrowingRawExceptionTypesTest | 1 | 0 | 0 | 100.00% | 1.500
| AvoidThrowingNullPointerExceptionTest | 1 | 0 | 0 | 100.00% | 1.462
| AvoidCatchingThrowableRuleTest | 1 | 0 | 0 | 100.00% | 1.285
| ExceptionSignatureDeclarationRuleTest | 2 | 0 | 0 | 100.00% | 1.309

### test.net.sourceforge.pmd.rules.logging.jakartacommons

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| ProperLoggerTest | 1 | 0 | 0 | 100.00% | 1.673
| UseCorrectExceptionLoggingTest | 1 | 0 | 0 | 100.00% | 1.711

### test.net.sourceforge.pmd.dfa

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| DAAPathFinderTest | 1 | 0 | 0 | 100.00% | 1.628
| VariableAccessTest | 1 | 0 | 0 | 100.00% | 0.485
| AcceptanceTest | 31 | 0 | 0 | 100.00% | 2.922
| DataFlowNodeTest | 5 | 0 | 0 | 100.00% | 0.457
| GeneralFiddlingTest | 1 | 0 | 0 | 100.00% | 1.479
| StatementAndBraceFinderTest | 6 | 0 | 0 | 100.00% | 1.652
| StructureTest | 1 | 0 | 0 | 100.00% | 0.542

### test.net.sourceforge.pmd.rules.finalize

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| FinalizeOnlyCallsSuperFinalizeRuleTest | 1 | 0 | 0 | 100.00% | 1.700
| FinalizeDoesNotCallSuperFinalizeRuleTest | 1 | 0 | 0 | 100.00% | 1.680
| AvoidCallingFinalizeTest | 1 | 0 | 0 | 100.00% | 1.439
| FinalizeOverloadedRuleTest | 1 | 0 | 0 | 100.00% | 1.632

### test.net.sourceforge.pmd.jsp.rules

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| DontNestJsfInJstlIterationTest | 1 | 0 | 0 | 100.00% | 1.140
| DuplicateJspImportTest | 1 | 0 | 0 | 100.00% | 1.012
| IframeMissingSrcAttributeTest | 1 | 0 | 0 | 100.00% | 1.199
| NoClassAttributeTest | 1 | 0 | 0 | 100.00% | 1.347
| NoLongScriptsTest | 1 | 0 | 0 | 100.00% | 1.313
| NoScriptletsTest | 1 | 0 | 0 | 100.00% | 1.362
| NoInlineStyleInformationTest | 1 | 0 | 0 | 100.00% | 0.913
| NoJspForwardTest | 1 | 0 | 0 | 100.00% | 1.191
| NoHtmlCommentsTest | 1 | 0 | 0 | 100.00% | 1.175

### test.net.sourceforge.pmd.rules.clone

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| CloneMethodMustImplementCloneableTest | 1 | 0 | 0 | 100.00% | 1.467
| CloneThrowsCloneNotSupportedExceptionTest | 1 | 0 | 0 | 100.00% | 1.496
| ProperCloneImplementationTest | 1 | 0 | 0 | 100.00% | 1.579

### test.net.sourceforge.pmd.rules.optimization

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| LocalVariableCouldBeFinalTest | 1 | 0 | 0 | 100.00% | 1.503
| AvoidInstantiatingObjectsInLoopsTest | 1 | 0 | 0 | 100.00% | 1.473
| MethodArgumentCouldBeFinalTest | 1 | 0 | 0 | 100.00% | 1.536
| UseArraysAsListTest | 1 | 0 | 0 | 100.00% | 2.213
| AvoidArrayLoopsTest | 1 | 0 | 0 | 100.00% | 2.098
| BooleanInversionTest | 1 | 0 | 0 | 100.00% | 1.604
| UseStringBufferForStringAppendsTest | 1 | 0 | 0 | 100.00% | 1.591
| SimplifyStartsWithTest | 1 | 0 | 0 | 100.00% | 1.596

### test.net.sourceforge.pmd.symboltable

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| NameOccurrencesTest | 5 | 0 | 0 | 100.00% | 1.204
| MethodNameDeclarationTest | 1 | 0 | 0 | 100.00% | 1.182
| LocalScopeTest | 8 | 0 | 0 | 100.00% | 1.267
| TypeSetTest | 17 | 0 | 0 | 100.00% | 0.495
| ClassScopeTest | 16 | 0 | 0 | 100.00% | 1.454
| ImageFinderFunctionTest | 2 | 0 | 0 | 100.00% | 0.475
| AcceptanceTest | 4 | 0 | 0 | 100.00% | 1.313
| MethodScopeTest | 2 | 0 | 0 | 100.00% | 1.243
| VariableUsageFinderFunctionTest | 1 | 0 | 0 | 100.00% | 0.480
| SourceFileScopeTest | 4 | 0 | 0 | 100.00% | 1.060
| ScopeCreationVisitorTest | 1 | 0 | 0 | 100.00% | 1.167
| GlobalScopeTest | 2 | 0 | 0 | 100.00% | 1.125
| VariableNameDeclarationTest | 8 | 0 | 0 | 100.00% | 1.271

### test.net.sourceforge.pmd.stat

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| StatisticalRuleTest | 81 | 0 | 0 | 100.00% | 6.730
| MetricTest | 7 | 0 | 0 | 100.00% | 0.474

### test.net.sourceforge.pmd.rules.imports

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| ImportFromSamePackageRuleTest | 1 | 0 | 0 | 100.00% | 1.284
| DontImportJavaLangRuleTest | 1 | 0 | 0 | 100.00% | 1.457
| UnusedImportsRuleTest | 5 | 0 | 0 | 100.00% | 1.593
| DuplicateImportsRuleTest | 1 | 0 | 0 | 100.00% | 1.271

### test.net.sourceforge.pmd.rules.logging.java

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| AvoidPrintStackTraceTest | 1 | 0 | 0 | 100.00% | 1.565
| SystemPrintlnTest | 1 | 0 | 0 | 100.00% | 1.589
| LoggerIsNotStaticFinalTest | 1 | 0 | 0 | 100.00% | 1.480
| MoreThanOneLoggerTest | 1 | 0 | 0 | 100.00% | 1.415

### test.net.sourceforge.pmd.rules.migrating

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| AvoidEnumAsIdentifierTest | 1 | 0 | 0 | 100.00% | 1.519
| AvoidAssertAsIdentifierTest | 1 | 0 | 0 | 100.00% | 1.465
| ReplaceHashtableWithMapTest | 1 | 0 | 0 | 100.00% | 1.477
| ReplaceVectorWithListTest | 1 | 0 | 0 | 100.00% | 1.472
| ReplaceEnumerationWithIteratorTest | 1 | 0 | 0 | 100.00% | 1.471
| IntegerInstantiationTest | 1 | 0 | 0 | 100.00% | 1.534

### test.net.sourceforge.pmd.rules.javabeans

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| BeanMembersShouldSerializeRuleTest | 2 | 0 | 0 | 100.00% | 1.595
| MissingSerialVersionUIDTest | 1 | 0 | 0 | 100.00% | 1.518

### test.net.sourceforge.pmd.util

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| StringUtilTest | 5 | 0 | 0 | 100.00% | 0.568
| ApplierTest | 1 | 0 | 0 | 100.00% | 0.455

### test.net.sourceforge.pmd.rules.j2ee

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| UseProperClassLoaderTest | 1 | 0 | 0 | 100.00% | 1.556

### test.net.sourceforge.pmd.rules.sunsecure

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| MethodReturnsInternalArrayTest | 1 | 0 | 0 | 100.00% | 1.556
| ArrayIsStoredDirectlyTest | 1 | 0 | 0 | 100.00% | 1.441

### test.net.sourceforge.pmd.renderers

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| XMLRendererTest | 5 | 0 | 0 | 100.00% | 1.240
| TextPadRendererTest | 2 | 0 | 0 | 100.00% | 1.097

### test.net.sourceforge.pmd.ant

Class | Tests | Errors | Failures | Success Rate | Time
--- | --- | --- | --- | --- | ---
| PMDTaskTest | 5 | 0 | 0 | 100.00% | 0.544
| FormatterTest | 2 | 0 | 0 | 100.00% | 0.469

## Test Cases

[ summary] [ package list] [ test cases]

### AvoidDollarSignsRuleTest

| testAll | 1.19

### DocumentNavigatorTest

| testChildAxisIterator | 0.93
| testParentAxisIterator | 0.05
| testParentAxisIterator2 | 0.04
| testDescendantAxisIterator | 0.05
| testDescendantAxisIterator2 | 0.05
| testFollowingSiblingAxisIterator | 0.08
| testFollowingSiblingAxisIterator2 | 0.05
| testPrecedingSiblingAxisIterator | 0.05
| testPrecedingSiblingAxisIterator2 | 0.05
| testXPath | 0.18
| testXPath2 | 0.05

### SourceTypeDiscovererTest

| testJspFile | 0.08
| testJavaFileUsingDefaults | 0.00
| testJavaFileUsing15 | 0.00

### AbstractRuleTest

| testCreateRV | 0.25
| testCreateRV2 | 0.00
| testRuleExclusion | 0.00
| testEquals1 | 0.00
| testEquals2 | 0.00
| testEquals3 | 0.00
| testEquals4 | 0.00
| testEquals5 | 0.00
| testEquals6 | 0.00
| testEquals7 | 0.00
| testEquals8 | 0.00
| testEquals9 | 0.00
| testEquals10 | 0.00

### JUnitSpellingRuleTest

| testAll | 1.17

### RegexpAcceptanceTest

| testSimple | 1.08

### UnnecessaryLocalBeforeReturnRuleTest

| testAll | 1.19

### InefficientStringBufferingTest

| testAll | 1.70

### MissingStaticMethodInNonInstantiatableClassTest

| testAll | 1.49

### PositionLiteralsFirstInComparisonsTest

| testAll | 1.46

### TokenEntryTest

| testSimple | 0.07

### AvoidFieldNameMatchingTypeNameTest

| testAll | 0.97

### JspDocStyleTest

| testSimplestJsp | 0.27
| testElementAttributeAndNamespace | 0.01
| testAttributeValueContainingHash | 0.01
| testCData | 0.01
| testDoctype | 0.02
| testComment | 0.00

### AnyTokenizerTest

| testMultiLineMacros | 0.09

### BadComparisonTest

| testAll | 1.36

### LanguageFactoryTest

| testSimple | 0.09

### MethodDeclTest

| testPublic | 0.72
| testPrivate | 0.01
| testProtected | 0.01
| testFinal | 0.01
| testSynchronized | 0.01
| testAbstract | 0.01
| testNative | 0.01
| testStrict | 0.01

### ASTAnnotationTest

| testAnnotationFailsWithJDK14 | 0.73
| testAnnotationSucceedsWithJDK15 | 0.01

### WhileLoopsMustUseBracesTest

| testAll | 1.14

### ExceptionAsFlowControlTest

| testAll | 1.07

### ProperLoggerTest

| testAll | 1.31

### XPathRuleTest

| testPluginname | 0.93
| testVariables | 0.02

### MisplacedNullCheckTest

| testAll | 1.39

### DontImportSunTest

| testAll | 1.04

### DAAPathFinderTest

| testTwoUpdateDefs | 1.25

### VariableAccessTest

| testGetVariableName | 0.07

### StringInstantiationRuleTest

| testAll | 1.20

### ReadableDurationTest

| testMillisSeconds | 0.07
| testSeconds | 0.00
| testWholeMinutes | 0.00
| testMinutesAndSeconds | 0.00
| testHours | 0.00

### FinalizeOnlyCallsSuperFinalizeRuleTest

| testAll | 1.26

### PreserveStackTraceTest

| test | 1.71

### DontNestJsfInJstlIterationTest

| testViolation | 0.78

### ShortVariableRuleTest

| testAll | 1.36

### CloseResourceTest

| testAll | 1.27

### AvoidConstantsInterfaceTest

| testAll | 1.31

### AttributeAxisIteratorTest

| testRemove | 0.10

### UseNotifyAllInsteadOfNotifyTest

| testAll | 1.46

### JUnitStaticSuiteRuleTest

| testAll | 1.13

### ForLoopsMustUseBracesTest

| testAll | 1.27

### CloneMethodMustImplementCloneableTest

| testAll | 1.09

### LocalVariableCouldBeFinalTest

| testAll | 1.14

### NameOccurrencesTest

| testSuper | 0.77
| testThis | 0.02
| testNameLinkage | 0.01
| testSimpleVariableOccurrence | 0.01
| testQualifiedOccurrence | 0.01

### AvoidFieldNameMatchingMethodNameTest

| testAll | 1.08

### UnnecessaryTemporariesTest

| testAll | 1.13

### MethodNameDeclarationTest

| testEquality | 0.80

### CloneThrowsCloneNotSupportedExceptionTest

| testAll | 1.12

### EmptyStatementNotInLoopRuleTest

| testAll | 1.31

### StatisticalRuleTest

| testMetrics | 0.54
| testExpectedMinimum | 0.02
| testSingleDatapoint | 0.01
| testS | 0.07
| testS1 | 0.10
| testS2 | 0.07
| testS3 | 0.08
| testS4 | 0.06
| testS5 | 0.07
| testT | 0.10
| testT1 | 0.10
| testT2 | 0.07
| testT3 | 0.07
| testT4 | 0.07
| testT5 | 0.07
| testM | 0.06
| testM1 | 0.06
| testM2 | 0.08
| testM3 | 0.06
| testM4 | 0.06
| testM5 | 0.06
| testST | 0.04
| testST1 | 0.05
| testST2 | 0.04
| testST3 | 0.04
| testST4 | 0.04
| testST5 | 0.04
| testTS | 0.10
| testTS1 | 0.08
| testTS2 | 0.09
| testTS3 | 0.09
| testTS4 | 0.11
| testTS5 | 0.11
| testSM | 0.05
| testSM1 | 0.06
| testSM2 | 0.05
| testSM3 | 0.06
| testSM4 | 0.09
| testSM5 | 0.05
| testMS | 0.08
| testMS1 | 0.11
| testMS2 | 0.08
| testMS3 | 0.08
| testMS4 | 0.08
| testMS5 | 0.08
| testTM | 0.09
| testTM1 | 0.12
| testTM2 | 0.09
| testTM3 | 0.09
| testTM4 | 0.09
| testTM5 | 0.10
| testMT | 0.18
| testMT1 | 0.13
| testMT2 | 0.03
| testMT3 | 0.23
| testMT4 | 0.21
| testMT5 | 0.21
| testSTM | 0.06
| testSTM1 | 0.04
| testSTM2 | 0.04
| testSTM3 | 0.04
| testSTM4 | 0.04
| testSTM5 | 0.04
| testSMT | 0.04
| testSMT1 | 0.05
| testSMT2 | 0.04
| testSMT3 | 0.04
| testSMT4 | 0.04
| testSMT5 | 0.07
| testTSM | 0.04
| testTSM1 | 0.05
| testTSM2 | 0.05
| testTSM3 | 0.05
| testTSM4 | 0.05
| testTSM5 | 0.05
| testTMS | 0.05
| testTMS1 | 0.05
| testTMS2 | 0.04
| testTMS3 | 0.07
| testTMS4 | 0.04
| testTMS5 | 0.08

### ImportFromSamePackageRuleTest

| testAll | 0.90

### ConfusingTernaryRuleTest

| testAll | 1.12

### RuleSetFactoryTest

| testRefs | 0.97
| testRuleSetNotFound | 0.00
| testCreateEmptyRuleSet | 0.01
| testSingleRule | 0.00
| testMultipleRules | 0.00
| testSingleRuleWithPriority | 0.00
| testProps | 0.00
| testXPathPluginnameProperty | 0.01
| testXPath | 0.01
| testFacadesOffByDefault | 0.00
| testDFAFlag | 0.00
| testExternalReferenceOverride | 0.01
| testOverrideMessage | 0.01
| testOverrideMessageOneElem | 0.04
| testExternalRef | 0.01
| testSetPriority | 0.02

### AccessNodeTest

| testModifiersOnClassDecl | 0.71
| testStatic | 0.00
| testPublic | 0.00
| testProtected | 0.00
| testPrivate | 0.00
| testFinal | 0.00
| testSynchronized | 0.00
| testVolatile | 0.00
| testTransient | 0.00
| testNative | 0.00
| testAbstract | 0.00
| testStrict | 0.00
| testPackagePrivate | 0.00

### FileReporterTest

| testCreation | 0.07
| testEmptyReport | 0.00
| testReport | 0.00
| testInvalidFile | 0.00

### UseArrayListInsteadOfVectorTest

| testAll | 1.39

### AvoidPrintStackTraceTest

| testAll | 1.20

### UncommentedEmptyConstructorRuleTest

| testDefault | 1.43
| testIgnoredConstructorInvocation | 0.25

### AvoidCatchingNPETest

| testAll | 1.19

### InstantiationToGetClassRuleTest

| testAll | 1.32

### LooseCouplingTest

| testAll | 1.08

### UnnecessaryBooleanAssertionTest

| testAll | 1.44

### EmptySwitchStmtRuleTest

| testAll | 1.23

### PositionalIteratorRuleTest

| test1 | 0.87
| test2 | 0.02
| test3 | 0.06

### RuleContextTest

| testReport | 0.10
| testFilename | 0.00

### AbstractNamingTest

| testAll | 1.08

### JspPageStyleTest

| testComment | 0.26
| testDirective | 0.01
| testDeclaration | 0.01
| testScriptlet | 0.01
| testExpression | 0.01
| testExpressionInAttribute | 0.02
| testElExpression | 0.01
| testElExpressionInAttribute | 0.00
| testJsfValueBinding | 0.01

### RuleViolationTest

| testConstructor1 | 0.00

### AvoidThreadGroupTest

| testAll | 1.31

### FinalizeShouldBeProtectedRuleTest

| testAll | 1.20

### SimpleRuleSetNameMapperTest

| testMultipleSimple | 0.07
| testOneSimple | 0.00
| testMultipleRegular | 0.00
| testOneRegular | 0.00
| testMix | 0.00
| testUnknown | 0.00
| testUnknownAndSimple | 0.00

### NullAssignmentRuleTest

| testAll | 1.22

### ASTLocalVariableDeclarationTest

| testSingleDimArray | 0.62
| testMultDimArray | 0.01
| testMultDimArraySplitBraces | 0.01

### DefaultLabelNotLastInSwitchStmtRuleTest

| testAll | 1.40

### RuleSetTest

| testNoDFA | 0.19
| testIncludesRuleWithDFA | 0.00
| testAccessors | 0.00
| testGetRuleByName | 0.00
| testGetRuleByName2 | 0.00
| testRuleList | 0.00
| testAddRuleSet | 0.00
| testApply0Rules | 0.45
| testEquals1 | 0.00
| testEquals2 | 0.00
| testEquals3 | 0.00
| testEquals4 | 0.00
| testEquals5 | 0.00
| testEquals6 | 0.00

### UnnecessaryReturnTest

| testAll | 1.28

### AssignmentToNonFinalStaticTest

| testAll | 1.13

### DefaultPackageTest

| testAll | 1.26

### AtLeastOneConstructorRuleTest

| testAll | 1.16

### SimplifyBooleanReturnsTest

| testAll | 0.89

### ASTVariableDeclaratorIdTest

| testIsExceptionBlockParameter | 0.09
| testTypeNameNode | 0.69

### SimplifyConditionalTest

| testAll | 1.48

### LocalScopeTest

| testNameWithThisOrSuperIsNotFlaggedAsUnused | 0.10
| testNameWithSuperIsNotFlaggedAsUnused | 0.00
| testLocalVariableDeclarationFound | 0.70
| testQualifiedNameOccurrence | 0.04
| testPostfixUsageIsRecorded | 0.02
| testLocalVariableTypesAreRecorded | 0.01
| testMethodArgumentTypesAreRecorded | 0.01
| testgetEnclosingMethodScope | 0.01

### JUnitAssertionsShouldIncludeMessageTest

| testAll | 1.22

### DontImportJavaLangRuleTest

| testAll | 1.08

### DuplicateJspImportTest

| testAll | 0.61

### ASTLiteralTest

| testIsStringLiteral | 0.82
| testIsNotStringLiteral | 0.01

### SwitchDensityTest

| testAll | 1.03

### ASTAssignmentOperatorTest

| testSimpleAssignmentRecognized | 0.82
| testCompoundAssignmentPlusRecognized | 0.01
| testCompoundAssignmentMultRecognized | 0.01

### UseIndexOfCharTest

| testAll | 1.25

### SystemPrintlnTest

| testAll | 1.22

### AvoidEnumAsIdentifierTest

| testAll | 1.14

### SimplifyBooleanAssertionTest

| testAll | 1.26

### AvoidInstanceofChecksInCatchClauseTest

| testAll | 1.38

### UseStringBufferLengthTest

| testAll | 1.34

### XMLRendererTest

| test_no_dupes | 0.14
| test_one_dupe | 0.02
| testRender_MultipleMatch | 0.01

### ExcessivePublicCountTest

| testSimpleOK | 0.63
| testSimpleBad | 0.04

### JDKVersionTest

| testEnumAsKeywordShouldFailWith14 | 0.49
| testEnumAsIdentifierShouldPassWith14 | 0.02
| testEnumAsKeywordShouldPassWith15 | 0.01
| testEnumAsIdentifierShouldFailWith15 | 0.00
| testAssertAsKeywordVariantsSucceedWith1_4 | 0.14
| testAssertAsVariableDeclIdentifierFailsWith1_4 | 0.00
| testAssertAsMethodNameIdentifierFailsWith1_4 | 0.01
| testAssertAsIdentifierSucceedsWith1_3 | 0.01
| testAssertAsKeywordFailsWith1_3 | 0.03
| testVarargsShouldPassWith15 | 0.01
| testVarargsShouldFailWith14 | 0.00
| testJDK15ForLoopSyntaxShouldPassWith15 | 0.02
| testJDK15ForLoopSyntaxWithModifiers | 0.01
| testJDK15ForLoopShouldFailWith14 | 0.01
| testJDK15GenericsSyntaxShouldPassWith15 | 0.02
| testVariousParserBugs | 0.04
| testNestedClassInMethodBug | 0.07
| testGenericsInMethodCall | 0.02
| testGenericINAnnotation | 0.05
| testGenericReturnType | 0.02
| testMultipleGenerics | 0.02
| testAnnotatedParams | 0.01
| testAnnotatedLocals | 0.01
| testAssertAsIdentifierSucceedsWith1_3_test2 | 0.01

### CallSuperInConstructorTest

| testAll | 1.21
| testEnum | 0.12

### ConstructorCallsOverridableMethodTest

| testAll | 1.34
| testGenerics | 0.08

### CyclomaticComplexityTest

| testOneMethod | 0.89
| testNastyComplicatedMethod | 0.45
| testConstructor | 0.02
| testLessComplicatedThanReportLevel | 0.02

### AbstractClassWithoutAbstractMethodTest

| testAll | 1.24

### NonStaticInitializerRuleTest

| testAll | 1.17

### AvoidAssertAsIdentifierTest

| testOne | 1.10

### FinalizeDoesNotCallSuperFinalizeRuleTest

| testAll | 1.30

### ExcludeLinesTest

| testExcludeOne | 0.01
| testExcludeMultiple | 0.00
| testCopyMatches | 0.00
| testAlternateMarker | 0.00
| testAcceptance | 1.00

### EmptyTryBlockRuleTest

| testAll | 1.32

### FinalFieldCouldBeStaticRuleTest

| testAll | 1.36

### SuppressWarningsTest

| testClassLevelSuppression | 0.87
| testInheritedSuppression | 0.01
| testMethodLevelSuppression | 0.02
| testConstructorLevelSuppression | 0.02
| testFieldLevelSuppression | 0.02
| testParameterLevelSuppression | 0.02
| testLocalVariableLevelSuppression | 0.02

### EmptySynchronizedBlockRuleTest

| testAll | 1.22

### UnnecessaryConstructorTest

| testAll | 1.42

### XPathJspRuleTest

| testExpressionMatching | 0.77

### TypeSetTest

| testASTCompilationUnitPackage | 0.07
| testAddImport | 0.00
| testFindClassImplicitImport | 0.01
| testFindClassSamePackage | 0.02
| testFindClassExplicitImport | 0.00
| testFindClassImportOnDemand | 0.00
| testFindClassPrimitive | 0.00
| testFindClassVoid | 0.00
| testFindFullyQualified | 0.00
| testPrimitiveTypeResolver | 0.00
| testVoidTypeResolver | 0.00
| testExplicitImportResolver | 0.00
| testImplicitImportResolverPass | 0.00
| testImplicitImportResolverPassFail | 0.00
| testCurrentPackageResolverPass | 0.00
| testImportOnDemandResolverPass | 0.00
| testImportOnDemandResolverFail | 0.00

### UseCorrectExceptionLoggingTest

| testAll | 1.35

### MetricTest

| testGetMetricName | 0.07
| testGetCount | 0.00
| testGetTotal | 0.00
| testGetLowValue | 0.00
| testGetHighValue | 0.00
| testGetAverage | 0.00
| testGetStandardDeviation | 0.00

### ClassScopeTest

| testEnumsClassScope | 0.81
| testAnonymousInnerClassName | 0.00
| testContains | 0.00
| testCantContainsSuperToString | 0.00
| testContainsStaticVariablePrefixedWithClassName | 0.00
| testClassName | 0.01
| testMethodDeclarationRecorded | 0.01
| testTwoMethodsSameNameDiffArgs | 0.02
| testOneParams | 0.01
| testTwoParams | 0.04
| testNoParams | 0.01
| testNestedClassDeclFound | 0.01
| testbuz | 0.03
| testMethodUsageSeen | 0.02
| testMethodUsageSeenWithThis | 0.02
| testMethodUsageSeen2 | 0.06

### ShortMethodNameTest

| testAll | 1.21

### OptimizableToArrayCallTest

| testAll | 1.35

### BeanMembersShouldSerializeRuleTest

| testAll | 1.18
| testPrefixProperty | 0.05

### UnusedLocalVariableTest

| testAll | 1.43

### UseAssertEqualsInsteadOfAssertTrueTest

| testAll | 1.27

### MethodWithSameNameAsEnclosingClassRuleTest

| testAll | 0.97

### UncommentedEmptyMethodRuleTest

| testAll | 1.30

### ImageFinderFunctionTest

| testSingleImage | 0.10
| testSeveralImages | 0.00

### UselessOperationOnImmutableTest

| testAll | 1.51

### NonCaseLabelInSwitchStatementRuleTest

| testAll | 1.55

### ClassDeclTest

| testPublic | 0.70
| testAbstract | 0.00
| testFinal | 0.00
| testStrict | 0.01
| testPublicFinal | 0.00

### MissingBreakInSwitchTest

| testAll | 1.42

### UseSingletonTest

| testAll | 1.24
| testResetState | 0.07

### JumbledIncrementerRuleTest

| testAll | 1.60

### SimpleNodeTest

| testMethodDiffLines | 0.77
| testMethodSameLine | 0.01
| testNoLookahead | 0.00
| testHasExplicitExtends | 0.04
| testNoExplicitExtends | 0.00
| testHasExplicitImplements | 0.02
| testNoExplicitImplements | 0.00
| testColumnsOnQualifiedName | 0.01
| testLineNumbersForNameSplitOverTwoLines | 0.00
| testLineNumbersAreSetOnAllSiblings | 0.16
| testFindChildrenOfType | 0.00
| testFindChildrenOfTypeMultiple | 0.00
| testFindChildrenOfTypeRecurse | 0.00
| testReplaceChild | 0.00
| testGetFirstChild | 0.00
| testGetFirstChildNested | 0.01
| testGetFirstChildNestedDeeper | 0.00
| testContainsNoInnerWithAnonInner | 0.03
| testContainsChildOfType | 0.00
| testXPathNodeSelect | 0.18

### ReportTest

| testBasic | 0.72
| testMetric0 | 0.00
| testMetric1 | 0.00
| testExclusionsInReportWithAnnotations | 0.08
| testExclusionsInReportWithNOPMD | 0.00

### ReplaceHashtableWithMapTest

| testAll | 1.12

### AvoidDeeplyNestedIfStmtsRuleTest

| testAll | 1.31

### VariableNamingConventionsTest

| testAll | 1.17
| testPrefixStripping | 0.12
| testSuffixStripping | 0.09

### InefficientEmptyStringCheckTest

| testAll | 1.36

### StringUtilTest

| testReplaceWithOneChar | 0.11
| testReplaceWithMultipleChars | 0.00
| testReplaceStringWithString | 0.00
| testReplaceStringWithString2 | 0.00
| testReplaceWithNull | 0.00

### OverrideBothEqualsAndHashcodeTest

| testAll | 1.49

### ConsecutiveLiteralAppendsTest

| testAll | 3.46

### UnusedNullCheckInEqualsTest

| testAll | 1.36

### ASTFieldDeclarationTest

| testIsArray | 0.52
| testMultiDimensionalArray | 0.00
| testIsSyntacticallyPublic | 0.07
| testWithEnum | 0.02
| testGetVariableName | 0.00

### UselessAssignmentRuleTest

| testAll | 0.00

### AvoidInstantiatingObjectsInLoopsTest

| testAll | 1.11

### StringToStringRuleTest

| testAll | 1.20

### IfStmtsMustUseBracesRuleTest

| testAll | 1.19

### NonThreadSafeSingletonTest

| testAll | 1.50

### AvoidDuplicateLiteralsRuleTest

| testAll | 1.15
| testStringParserEmptyString | 0.06
| testStringParserSimple | 0.02
| testStringParserEscapedChar | 0.02
| testStringParserEscapedEscapedChar | 0.02

### MatchTest

| testSimple | 0.08
| testCompareTo | 0.00

### ReplaceVectorWithListTest

| testAll | 1.11

### ExcessiveImportsTest

| testAll | 0.77

### MethodArgumentCouldBeFinalTest

| testAll | 1.17

### ReplaceEnumerationWithIteratorTest

| testAll | 1.10

### ReturnFromFinallyBlockTest

| testAll | 1.57

### EqualsNullRuleTest

| testAll | 1.38

### AcceptanceTest

| testClashingSymbols | 0.78
| testInitializer | 0.01
| testCatchBlocks | 0.05
| testEq | 0.06

### ForLoopShouldBeWhileLoopRuleTest

| testAll | 1.30
| testJDK15ForLoop | 0.09

### AvoidCallingFinalizeTest

| testAll | 1.07

### FileSelectorTest

| testSelectJavaFile | 0.07
| testSelectJspFile | 0.00
| testUnwantedFile | 0.00
| testUnwantedJavaFile | 0.00

### MethodScopeTest

| testMethodParameterOccurrenceRecorded | 0.82
| testMethodName | 0.01

### EmptyWhileStmtRuleTest

| testAll | 1.24

### AvoidThrowingRawExceptionTypesTest

| testAll | 1.14

### LongClassRuleTest

| testAll | 1.03
| testLongClassWithLongerTest | 0.07

### EmptyIfStmtRuleTest

| testAll | 1.29

### UseProperClassLoaderTest

| testAll | 1.18

### SwitchStmtsShouldHaveDefaultRuleTest

| testAll | 1.38

### ParserCornersTest

| testGetFirstASTNameImageNull | 0.58

### MatchAlgorithmTest

| testSimple | 0.22
| testIgnore | 0.01

### UseArraysAsListTest

| testAll | 1.85

### AcceptanceTest

| testbook | 0.97
| testLabelledBreakLockup | 0.05
| test_1 | 0.04
| test_2 | 0.09
| test_3 | 0.03
| test_4 | 0.02
| test_6 | 0.02
| test_7 | 0.02
| test_8 | 0.02
| test_9 | 0.03
| test_10 | 0.02
| test_11 | 0.02
| test_12 | 0.02
| test_13 | 0.08
| test_14 | 0.05
| test_15 | 0.05
| test_16 | 0.06
| test_17 | 0.07
| test_18 | 0.05
| test_19 | 0.07
| test_20 | 0.10
| test_21 | 0.09
| test_22 | 0.06
| test_23 | 0.06
| test_24 | 0.08
| test_25 | 0.03
| test_26 | 0.04
| test_27 | 0.05
| test_28 | 0.08
| test_29 | 0.06
| test_30 | 0.04

### EncodingTest

| testDecodingOfUTF8 | 0.00

### UnconditionalIfStatementRuleTest

| testAll | 1.31

### DataFlowNodeTest

| testAddPathToChild | 0.08
| testRemovePathToChild | 0.00
| testRemovePathWithNonChild | 0.00
| testReverseParentPathsTo | 0.00
| testSetType | 0.00

### MissingSerialVersionUIDTest

| testAll | 1.16

### VariableUsageFinderFunctionTest

| testLookingForUsed | 0.10

### SourceFileScopeTest

| testClassDeclAppears | 0.66
| testPackageIsEmptyString | 0.00
| testPackageNameFound | 0.01
| testNestedClasses | 0.01

### UnusedFormalParameterRuleTest

| testAll | 1.02
| testCheckPublicFlag | 0.03

### CommandLineOptionsTest

| testTargetJDKVersion | 0.09
| testDebug | 0.00
| testExcludeMarker | 0.00
| testShortNames | 0.00
| testEncoding | 0.00
| testInputFileName | 0.00
| testReportFormat | 0.00
| testRulesets | 0.00
| testCommaSeparatedFiles | 0.00
| testNotEnoughArgs | 0.01
| testNullArgs | 0.00
| testRenderer | 0.03

### CPPTokenizerTest

| testMultiLineMacros | 0.15
| testDollarSignInIdentifier | 0.00
| testDollarSignStartingIdentifier | 0.00
| testWideCharacters | 0.00

### ScopeCreationVisitorTest

| testScopesAreCreated | 0.78

### IframeMissingSrcAttributeTest

| testAll | 0.84

### ExternalRuleIDTest

| testSimpleRef | 0.07

### UnusedPrivateMethodRuleTest

| testAll | 1.38

### SuspiciousOctalEscapeTest

| testAll | 0.91

### UseAssertSameInsteadOfAssertTrueTest

| testAll | 1.40

### UnusedImportsRuleTest

| testAll | 1.06
| testForLoop | 0.04
| testGenerics | 0.03
| testAnnotations | 0.03
| testAnnotations2 | 0.05

### NoClassAttributeTest

| testAll | 0.94

### MethodReturnsInternalArrayTest

| testAll | 1.19

### ImmutableFieldTest

| testAll | 1.55

### IfElseStmtsMustUseBracesTest

| testAll | 1.39

### IntegerInstantiationTest

| testAll | 1.16

### ProperCloneImplementationTest

| testAll | 1.21

### AvoidThrowingNullPointerExceptionTest

| testAll | 1.10

### MethodNamingConventionsTest

| testAll | 0.76

### DuplicateImportsRuleTest

| testAll | 0.89

### EmptyStaticInitializerRuleTest

| testAll | 1.16

### IdempotentOperationsTest

| testAll | 0.92

### ASTThrowStatementTest

| testGetFirstASTNameImageNull | 0.81
| testGetFirstASTNameImageNew | 0.02

### GeneralFiddlingTest

| test1 | 1.03

### BooleanInstantiationRuleTest

| testAll | 1.33

### AccessorClassGenerationTest

| testAll | 1.18

### SuspiciousConstantFieldNameTest

| testAll | 1.19

### AvoidNonConstructorMethodsWithClassNameTest

| testAll | 1.01

### GlobalScopeTest

| testClassDeclAppears | 0.65
| testEnums | 0.09

### XMLRendererTest

| testEmptyReport | 0.11
| testErrorReport | 0.04
| testSingleReport | 0.68
| testDoubleReport | 0.02
| testTwoFiles | 0.02

### EmptyFinallyBlockRuleTest

| testAll | 1.38

### ApplierTest

| testSimple | 0.07

### EmptyFinalizerRuleTest

| testAll | 1.15

### ClassCastExceptionWithToArrayTest

| testAll | 1.37

### AvoidReassigningParametersTest

| testAll | 1.27

### AppendCharacterWithCharTest

| testAll | 1.30

### UnnecessaryFinalModifierTest

| testAll | 1.29

### DoubleCheckedLockingTest

| testAll | 1.19
| testGenerics | 0.12

### ClassNamingConventionsTest

| testAll | 0.73

### CouplingBetweenObjectsTest

| testAll | 0.98

### FieldDeclTest

| testPublic | 0.73
| testProtected | 0.01
| testPrivate | 0.00
| testStatic | 0.00
| testFinal | 0.01
| testTransient | 0.00
| testVolatile | 0.00

### AvoidCatchingThrowableRuleTest

| testAll | 0.92

### AttributeTest

| testConstructor | 0.10

### SourceCodeTest

| testSimple | 0.19

### AvoidDecimalLiteralsInBigDecimalConstructorTest

| testAll | 1.23

### TooManyFieldsTest

| testAll | 1.32
| testPropertySetting | 0.02

### ASTBooleanLiteralTest

| testTrue | 0.78
| testFalse | 0.01

### ArrayIsStoredDirectlyTest

| testAll | 1.08

### NoLongScriptsTest

| testAll | 0.94

### UnusedModifierRuleTest

| testAll | 1.11

### AvoidArrayLoopsTest

| testAll | 1.74

### LongVariableRuleTest

| testAll | 1.33
| testThreshold | 0.05

### SingularFieldRuleTest

| testAll | 1.58

### OnlyOneReturnRuleTest

| testAll | 1.13

### TestClassWithoutTestCasesTest

| testAll | 0.91

### InsufficientStringBufferDeclarationTest

| testAll | 2.74

### JUnitTestsShouldContainAssertsTest

| testAll | 1.26

### UselessOverridingMethodTest

| testAll | 1.31

### PackageCaseTest

| testAll | 1.13

### UnnecessaryCaseChangeRuleTest

| testAll | 1.16

### NoPackageTest

| testAll | 1.08

### VariableNameDeclarationTest

| testConstructor | 0.76
| testExceptionBlkParam | 0.00
| testIsArray | 0.01
| testPrimitiveType | 0.01
| testArrayIsReferenceType | 0.01
| testPrimitiveTypeImage | 0.01
| testRefTypeImage | 0.02
| testParamTypeImage | 0.07

### BooleanInversionTest

| testAll | 1.24

### PMDTaskTest

| testNoFormattersValidation | 0.10
| testFormatterWithNoToFileAttribute | 0.01
| testNoRuleSets | 0.00
| testNestedRuleset | 0.00
| testInvalidJDK | 0.00

### MatchesFunctionTest

| testMatch | 0.13
| testNoMatch | 0.00

### StatementAndBraceFinderTest

| testStatementExpressionParentChildLinks | 1.13
| testVariableDeclaratorParentChildLinks | 0.03
| testIfStmtHasCorrectTypes | 0.02
| testWhileStmtHasCorrectTypes | 0.02
| testForStmtHasCorrectTypes | 0.04
| testOnlyWorksForMethodsAndConstructors | 0.00

### MisleadingVariableNameTest

| testAll | 1.25

### StructureTest

| testAddResultsinDFANodeContainingAddedNode | 0.11

### FinalizeOverloadedRuleTest

| testAll | 1.26

### ASTMethodDeclarationTest

| testGetVariableName | 0.10

### ASTPrimarySuffixTest

| testArrayDereference | 0.87
| testArguments | 0.02

### CollapsibleIfStatementsTest

| testAll | 1.36

### UseStringBufferForStringAppendsTest

| testAll | 1.23

### TextPadRendererTest

| testNullPassedIn | 0.01
| testRenderer | 0.72

### LoggerIsNotStaticFinalTest

| testAll | 1.11

### NoScriptletsTest

| testAll | 0.97

### LongParameterListRuleTest

| testAll | 0.93

### AssignmentInOperandTest

| testAll | 1.35

### CompareObjectsWithEqualsTest

| testAll | 1.31

### MoreThanOneLoggerTest

| testAll | 1.05

### ASTInitializerTest

| testDontCrashOnBlockStatement | 0.82

### UnsynchronizedStaticDateFormatterTest

| testAll | 1.24

### AvoidProtectedFieldInFinalClassRuleTest

| testAll | 1.22

### ASTSwitchLabelTest

| testDefaultOff | 0.84
| testDefaultSet | 0.02

### SimplifyBooleanExpressionsRuleTest

| testAll | 1.44

### UnnecessaryParenthesesTest

| testAll | 1.27

### ExcessiveMethodLengthTest

| testAll | 1.14
| testReallyLongMethodWithLongerRange | 0.12

### ExceptionSignatureDeclarationRuleTest

| testAll | 0.90
| testGenerics | 0.04

### SuspiciousEqualsMethodNameRuleTest

| testAll | 1.29

### SuspiciousHashcodeMethodNameRuleTest

| testAll | 1.26

### NoInlineStyleInformationTest

| testAll | 0.53

### EmptyCatchBlockRuleTest

| testAll | 1.50
| testCommentedBlocksDisallowed | 0.13
| testCommentedBlocksAllowed | 0.19

### ASTImportDeclarationTest

| testImportOnDemand | 0.71
| testGetImportedNameNode | 0.00
| testStaticImport | 0.01
| testStaticImportFailsWithJDK14 | 0.00

### UnusedPrivateFieldRuleTest

| testAll | 1.42

### ASTBlockStatementTest

| testIsAllocation | 0.09
| testIsAllocation2 | 0.00

### NoJspForwardTest

| testViolation | 0.82

### NoHtmlCommentsTest

| testAll | 0.81

### SimplifyStartsWithTest

| testAll | 1.23

### SimpleDateFormatNeedsLocaleRuleTest

| testAll | 1.28

### UseAssertNullInsteadOfAssertTrueTest

| testAll | 1.23

### UseLocaleWithCaseConversionsRuleTest

| testAll | 1.37

### FormatterTest

| testType | 0.00
| testNull | 0.08

### JavaTokensTokenizerTest

| test1 | 0.18
| test2 | 0.00
| testDiscardSemicolons | 0.00
| testDiscardImports | 0.00
| testDiscardPkgStmts | 0.00