268 lines (258 with data), 15.4 kB
<?xml version="1.0" encoding="UTF-8"?>
<ruleset xmlns="http://pmd.sf.net/ruleset/1.0.0" name="pmd-eclipse" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd" xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd">
<description>Mifos PMD ruleset</description>
<rule ref="rulesets/typeresolution.xml/LooseCoupling"/>
<rule ref="rulesets/typeresolution.xml/CloneMethodMustImplementCloneable"/>
<rule ref="rulesets/typeresolution.xml/UnusedImports"/>
<rule ref="rulesets/typeresolution.xml/SignatureDeclareThrowsException"/>
<rule ref="rulesets/braces.xml/IfStmtsMustUseBraces"/>
<rule ref="rulesets/braces.xml/WhileLoopsMustUseBraces"/>
<rule ref="rulesets/braces.xml/IfElseStmtsMustUseBraces"/>
<rule ref="rulesets/braces.xml/ForLoopsMustUseBraces"/>
<rule ref="rulesets/controversial.xml/UnnecessaryConstructor"/>
<rule ref="rulesets/controversial.xml/NullAssignment"/>
<rule ref="rulesets/controversial.xml/OnlyOneReturn"/>
<rule ref="rulesets/controversial.xml/UnusedModifier"/>
<rule ref="rulesets/controversial.xml/AssignmentInOperand"/>
<rule ref="rulesets/controversial.xml/AtLeastOneConstructor"/>
<rule ref="rulesets/controversial.xml/DontImportSun"/>
<rule ref="rulesets/controversial.xml/SuspiciousOctalEscape"/>
<rule ref="rulesets/controversial.xml/CallSuperInConstructor"/>
<rule ref="rulesets/controversial.xml/UnnecessaryParentheses"/>
<!-- should only apply to fields
<rule ref="rulesets/controversial.xml/DefaultPackage"/> -->
<rule ref="rulesets/controversial.xml/BooleanInversion"/>
<!--
This rule complains about constructs that have no alternative, such as
SomeClass foo = null;
try {
foo = somevalue;
finally {
cleanup(foo);
}
For a specific Cheetah example, see discussion at http://tinyurl.com/4ltc6t
<rule ref="rulesets/controversial.xml/DataflowAnomalyAnalysis"/>
-->
<rule ref="rulesets/controversial.xml/AvoidFinalLocalVariable"/>
<rule ref="rulesets/controversial.xml/AvoidUsingShortType"/>
<rule ref="rulesets/controversial.xml/AvoidUsingVolatile"/>
<rule ref="rulesets/controversial.xml/AvoidUsingNativeCode"/>
<rule ref="rulesets/controversial.xml/AvoidAccessibilityAlteration"/>
<rule ref="rulesets/controversial.xml/DoNotCallGarbageCollectionExplicitly"/>
<rule ref="rulesets/basic.xml/EmptyCatchBlock"/>
<rule ref="rulesets/basic.xml/EmptyIfStmt"/>
<rule ref="rulesets/basic.xml/EmptyWhileStmt"/>
<rule ref="rulesets/basic.xml/EmptyTryBlock"/>
<rule ref="rulesets/basic.xml/EmptyFinallyBlock"/>
<rule ref="rulesets/basic.xml/EmptySwitchStatements"/>
<rule ref="rulesets/basic.xml/JumbledIncrementer"/>
<rule ref="rulesets/basic.xml/ForLoopShouldBeWhileLoop"/>
<rule ref="rulesets/basic.xml/UnnecessaryConversionTemporary"/>
<rule ref="rulesets/basic.xml/OverrideBothEqualsAndHashcode"/>
<rule ref="rulesets/basic.xml/DoubleCheckedLocking"/>
<rule ref="rulesets/basic.xml/ReturnFromFinallyBlock"/>
<rule ref="rulesets/basic.xml/EmptySynchronizedBlock"/>
<rule ref="rulesets/basic.xml/UnnecessaryReturn"/>
<rule ref="rulesets/basic.xml/EmptyStaticInitializer"/>
<rule ref="rulesets/basic.xml/UnconditionalIfStatement"/>
<rule ref="rulesets/basic.xml/EmptyStatementNotInLoop"/>
<rule ref="rulesets/basic.xml/BooleanInstantiation"/>
<rule ref="rulesets/basic.xml/UnnecessaryFinalModifier"/>
<rule ref="rulesets/basic.xml/CollapsibleIfStatements"/>
<rule ref="rulesets/basic.xml/UselessOverridingMethod"/>
<rule ref="rulesets/basic.xml/ClassCastExceptionWithToArray"/>
<rule ref="rulesets/basic.xml/AvoidDecimalLiteralsInBigDecimalConstructor"/>
<rule ref="rulesets/basic.xml/UselessOperationOnImmutable"/>
<rule ref="rulesets/basic.xml/MisplacedNullCheck"/>
<rule ref="rulesets/basic.xml/UnusedNullCheckInEquals"/>
<rule ref="rulesets/basic.xml/AvoidThreadGroup"/>
<rule ref="rulesets/basic.xml/BrokenNullCheck"/>
<rule ref="rulesets/basic.xml/BigIntegerInstantiation"/>
<rule ref="rulesets/basic.xml/AvoidUsingOctalValues"/>
<rule ref="rulesets/basic.xml/AvoidUsingHardCodedIP"/>
<rule ref="rulesets/basic.xml/CheckResultSet"/>
<rule ref="rulesets/basic.xml/AvoidMultipleUnaryOperators"/>
<rule ref="rulesets/unusedcode.xml/UnusedPrivateField"/>
<rule ref="rulesets/unusedcode.xml/UnusedLocalVariable"/>
<rule ref="rulesets/unusedcode.xml/UnusedPrivateMethod"/>
<rule ref="rulesets/unusedcode.xml/UnusedFormalParameter"/>
<rule ref="rulesets/logging-java.xml/MoreThanOneLogger"/>
<rule ref="rulesets/logging-java.xml/LoggerIsNotStaticFinal"/>
<rule ref="rulesets/logging-java.xml/SystemPrintln"/>
<rule ref="rulesets/logging-java.xml/AvoidPrintStackTrace"/>
<rule ref="rulesets/strictexception.xml/AvoidCatchingThrowable"/>
<rule ref="rulesets/strictexception.xml/SignatureDeclareThrowsException"/>
<rule ref="rulesets/strictexception.xml/ExceptionAsFlowControl"/>
<rule ref="rulesets/strictexception.xml/AvoidCatchingNPE"/>
<rule ref="rulesets/strictexception.xml/AvoidThrowingRawExceptionTypes"/>
<rule ref="rulesets/strictexception.xml/AvoidThrowingNullPointerException"/>
<rule ref="rulesets/strictexception.xml/AvoidRethrowingException"/>
<rule ref="rulesets/strictexception.xml/DoNotExtendJavaLangError"/>
<rule ref="rulesets/strictexception.xml/DoNotThrowExceptionInFinally"/>
<!-- disabling to allow static enums - reenable if you can get @SuppressWarnings to work on them.
<rule ref="rulesets/design.xml/UseSingleton"/>
-->
<rule ref="rulesets/design.xml/SimplifyBooleanReturns"/>
<rule ref="rulesets/design.xml/SimplifyBooleanExpressions"/>
<rule ref="rulesets/design.xml/SwitchStmtsShouldHaveDefault"/>
<rule ref="rulesets/design.xml/AvoidDeeplyNestedIfStmts"/>
<rule ref="rulesets/design.xml/AvoidReassigningParameters"/>
<rule ref="rulesets/design.xml/SwitchDensity"/>
<rule ref="rulesets/design.xml/ConstructorCallsOverridableMethod"/>
<rule ref="rulesets/design.xml/AccessorClassGeneration"/>
<rule ref="rulesets/design.xml/FinalFieldCouldBeStatic"/>
<rule ref="rulesets/design.xml/CloseResource"/>
<rule ref="rulesets/design.xml/NonStaticInitializer"/>
<rule ref="rulesets/design.xml/DefaultLabelNotLastInSwitchStmt"/>
<rule ref="rulesets/design.xml/NonCaseLabelInSwitchStatement"/>
<rule ref="rulesets/design.xml/OptimizableToArrayCall"/>
<rule ref="rulesets/design.xml/BadComparison"/>
<rule ref="rulesets/design.xml/EqualsNull"/>
<rule ref="rulesets/design.xml/ConfusingTernary"/>
<rule ref="rulesets/design.xml/InstantiationToGetClass"/>
<rule ref="rulesets/design.xml/IdempotentOperations"/>
<rule ref="rulesets/design.xml/SimpleDateFormatNeedsLocale"/>
<rule ref="rulesets/design.xml/ImmutableField"/>
<rule ref="rulesets/design.xml/UseLocaleWithCaseConversions"/>
<rule ref="rulesets/design.xml/AvoidProtectedFieldInFinalClass"/>
<rule ref="rulesets/design.xml/AssignmentToNonFinalStatic"/>
<rule ref="rulesets/design.xml/MissingStaticMethodInNonInstantiatableClass"/>
<rule ref="rulesets/design.xml/AvoidSynchronizedAtMethodLevel"/>
<rule ref="rulesets/design.xml/MissingBreakInSwitch"/>
<rule ref="rulesets/design.xml/UseNotifyAllInsteadOfNotify"/>
<rule ref="rulesets/design.xml/AvoidInstanceofChecksInCatchClause"/>
<rule ref="rulesets/design.xml/AbstractClassWithoutAbstractMethod"/>
<rule ref="rulesets/design.xml/SimplifyConditional"/>
<rule ref="rulesets/design.xml/CompareObjectsWithEquals"/>
<rule ref="rulesets/design.xml/PositionLiteralsFirstInComparisons"/>
<rule ref="rulesets/design.xml/UnnecessaryLocalBeforeReturn"/>
<rule ref="rulesets/design.xml/NonThreadSafeSingleton"/>
<rule ref="rulesets/design.xml/UncommentedEmptyMethod"/>
<rule ref="rulesets/design.xml/UncommentedEmptyConstructor"/>
<rule ref="rulesets/design.xml/AvoidConstantsInterface"/>
<rule ref="rulesets/design.xml/UnsynchronizedStaticDateFormatter"/>
<rule ref="rulesets/design.xml/PreserveStackTrace"/>
<rule ref="rulesets/design.xml/UseCollectionIsEmpty"/>
<rule ref="rulesets/design.xml/ClassWithOnlyPrivateConstructorsShouldBeFinal"/>
<rule ref="rulesets/design.xml/EmptyMethodInAbstractClassShouldBeAbstract"/>
<rule ref="rulesets/design.xml/SingularField"/>
<rule ref="rulesets/design.xml/ReturnEmptyArrayRatherThanNull"/>
<rule ref="rulesets/design.xml/AbstractClassWithoutAnyMethod"/>
<rule ref="rulesets/design.xml/TooFewBranchesForASwitchStatement"/>
<!-- Not sure we want to enforce these
<rule ref="rulesets/optimizations.xml/LocalVariableCouldBeFinal"/>
<rule ref="rulesets/optimizations.xml/MethodArgumentCouldBeFinal"/> -->
<rule ref="rulesets/optimizations.xml/AvoidInstantiatingObjectsInLoops"/>
<rule ref="rulesets/optimizations.xml/UseArrayListInsteadOfVector"/>
<rule ref="rulesets/optimizations.xml/SimplifyStartsWith"/>
<rule ref="rulesets/optimizations.xml/UseStringBufferForStringAppends"/>
<rule ref="rulesets/optimizations.xml/UseArraysAsList"/>
<rule ref="rulesets/optimizations.xml/AvoidArrayLoops"/>
<rule ref="rulesets/optimizations.xml/UnnecessaryWrapperObjectCreation"/>
<rule ref="rulesets/optimizations.xml/AddEmptyString"/>
<rule ref="rulesets/sunsecure.xml/MethodReturnsInternalArray"/>
<rule ref="rulesets/sunsecure.xml/ArrayIsStoredDirectly"/>
<!--
<rule ref="rulesets/coupling.xml/CouplingBetweenObjects"/> -->
<!--
<rule ref="rulesets/coupling.xml/ExcessiveImports"/> -->
<rule ref="rulesets/coupling.xml/LooseCoupling"/>
<rule ref="rulesets/imports.xml/DuplicateImports"/>
<rule ref="rulesets/imports.xml/DontImportJavaLang"/>
<rule ref="rulesets/imports.xml/UnusedImports"/>
<rule ref="rulesets/imports.xml/ImportFromSamePackage"/>
<rule ref="rulesets/imports.xml/TooManyStaticImports"/>
<!--
<rule ref="rulesets/junit.xml/JUnitStaticSuite"/>
<rule ref="rulesets/junit.xml/JUnitSpelling"/>
<rule ref="rulesets/junit.xml/JUnitAssertionsShouldIncludeMessage"/>
<rule ref="rulesets/junit.xml/JUnitTestsShouldIncludeAssert"/>
<rule ref="rulesets/junit.xml/TestClassWithoutTestCases"/>
-->
<rule ref="rulesets/junit.xml/UnnecessaryBooleanAssertion"/>
<rule ref="rulesets/junit.xml/UseAssertEqualsInsteadOfAssertTrue"/>
<rule ref="rulesets/junit.xml/UseAssertSameInsteadOfAssertTrue"/>
<rule ref="rulesets/junit.xml/UseAssertNullInsteadOfAssertTrue"/>
<rule ref="rulesets/junit.xml/SimplifyBooleanAssertion"/>
<!--
<rule ref="rulesets/naming.xml/ShortVariable"/>
<rule ref="rulesets/naming.xml/LongVariable"/> -->
<rule ref="rulesets/naming.xml/ShortMethodName"/>
<rule ref="rulesets/naming.xml/VariableNamingConventions"/>
<rule ref="rulesets/naming.xml/MethodNamingConventions"/>
<rule ref="rulesets/naming.xml/ClassNamingConventions"/>
<rule ref="rulesets/naming.xml/AbstractNaming"/>
<rule ref="rulesets/naming.xml/AvoidDollarSigns"/>
<rule ref="rulesets/naming.xml/MethodWithSameNameAsEnclosingClass"/>
<rule ref="rulesets/naming.xml/SuspiciousHashcodeMethodName"/>
<rule ref="rulesets/naming.xml/SuspiciousConstantFieldName"/>
<rule ref="rulesets/naming.xml/SuspiciousEqualsMethodName"/>
<rule ref="rulesets/naming.xml/AvoidFieldNameMatchingTypeName"/>
<rule ref="rulesets/naming.xml/AvoidFieldNameMatchingMethodName"/>
<rule ref="rulesets/naming.xml/NoPackage"/>
<rule ref="rulesets/naming.xml/PackageCase"/>
<rule ref="rulesets/naming.xml/MisleadingVariableName"/>
<rule ref="rulesets/naming.xml/BooleanGetMethodName"/>
<rule ref="rulesets/codesize.xml/NPathComplexity"/>
<rule ref="rulesets/codesize.xml/ExcessiveMethodLength"/>
<rule ref="rulesets/codesize.xml/ExcessiveParameterList"/>
<rule ref="rulesets/codesize.xml/ExcessiveClassLength"/>
<rule ref="rulesets/codesize.xml/CyclomaticComplexity"/>
<rule ref="rulesets/codesize.xml/ExcessivePublicCount"/>
<rule ref="rulesets/codesize.xml/TooManyFields"/>
<rule ref="rulesets/codesize.xml/NcssMethodCount"/>
<rule ref="rulesets/codesize.xml/NcssTypeCount"/>
<rule ref="rulesets/codesize.xml/NcssConstructorCount"/>
<!-- test classes have many methods
<rule ref="rulesets/codesize.xml/TooManyMethods"/> -->
<rule ref="rulesets/finalizers.xml/EmptyFinalizer"/>
<rule ref="rulesets/finalizers.xml/FinalizeOnlyCallsSuperFinalize"/>
<rule ref="rulesets/finalizers.xml/FinalizeOverloaded"/>
<rule ref="rulesets/finalizers.xml/FinalizeDoesNotCallSuperFinalize"/>
<rule ref="rulesets/finalizers.xml/FinalizeShouldBeProtected"/>
<rule ref="rulesets/finalizers.xml/AvoidCallingFinalize"/>
<rule ref="rulesets/logging-jakarta-commons.xml/UseCorrectExceptionLogging"/>
<rule ref="rulesets/logging-jakarta-commons.xml/ProperLogger"/>
<!-- doesn't seem to apply for tests, but could be useful for production code
<rule ref="rulesets/javabeans.xml/BeanMembersShouldSerialize"/> -->
<rule ref="rulesets/javabeans.xml/MissingSerialVersionUID"/>
<rule ref="rulesets/clone.xml/ProperCloneImplementation"/>
<rule ref="rulesets/clone.xml/CloneThrowsCloneNotSupportedException"/>
<rule ref="rulesets/clone.xml/CloneMethodMustImplementCloneable"/>
<!-- This rule was triggered by testng annotations
<rule ref="rulesets/strings.xml/AvoidDuplicateLiterals"/> -->
<rule ref="rulesets/strings.xml/StringInstantiation"/>
<rule ref="rulesets/strings.xml/StringToString"/>
<rule ref="rulesets/strings.xml/InefficientStringBuffering"/>
<rule ref="rulesets/strings.xml/UnnecessaryCaseChange"/>
<rule ref="rulesets/strings.xml/UseStringBufferLength"/>
<rule ref="rulesets/strings.xml/AppendCharacterWithChar"/>
<!--
<rule ref="rulesets/strings.xml/ConsecutiveLiteralAppends"/> -->
<rule ref="rulesets/strings.xml/UseIndexOfChar"/>
<rule ref="rulesets/strings.xml/InefficientEmptyStringCheck"/>
<rule ref="rulesets/strings.xml/InsufficientStringBufferDeclaration"/>
<rule ref="rulesets/strings.xml/UselessStringValueOf"/>
<rule ref="rulesets/strings.xml/StringBufferInstantiationWithChar"/>
<rule ref="rulesets/strings.xml/UseEqualsToCompareStrings"/>
<rule ref="rulesets/strings.xml/AvoidStringBufferField"/>
</ruleset>
<!-- using an entire ruleset
<rule ref="rulesets/basic.xml"/>
Comment: We want to customize this rule a bit, change the message and raise the priority
<rule
ref="rulesets/basic.xml/EmptyCatchBlock"
message="Must handle exceptions">
<priority>2</priority>
</rule>
Comment: Now we'll customize a rule's property value
<rule ref="rulesets/codesize.xml/CyclomaticComplexity">
<properties>
<property name="reportLevel" value="5"/>
</properties>
</rule>
Comment: Note we want everything from braces.xml except WhileLoopsMustUseBraces
<rule ref="rulesets/braces.xml">
<exclude name="WhileLoopsMustUseBraces"/>
</rule>
-->