<?xml version="1.0"?>
<ruleset name="DMDirc PMD checks"
         xmlns="http://pmd.sf.net/ruleset/1.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
         xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
        <description>DMDirc minimal PMD checks.</description>

<rule ref="rulesets/java/empty.xml/EmptyIfStmt"><priority>1</priority></rule>
<rule ref="rulesets/java/empty.xml/EmptyWhileStmt"><priority>1</priority></rule>
<rule ref="rulesets/java/empty.xml/EmptyTryBlock"><priority>1</priority></rule>
<rule ref="rulesets/java/empty.xml/EmptyFinallyBlock"><priority>1</priority></rule>
<rule ref="rulesets/java/empty.xml/EmptySwitchStatements"><priority>1</priority></rule>
<rule ref="rulesets/java/basic.xml/JumbledIncrementer"><priority>1</priority></rule>
<rule ref="rulesets/java/basic.xml/ForLoopShouldBeWhileLoop"><priority>1</priority></rule>
<rule ref="rulesets/java/unnecessary.xml/UnnecessaryConversionTemporary"><priority>1</priority></rule>
<rule ref="rulesets/java/basic.xml/OverrideBothEqualsAndHashcode"><priority>1</priority></rule>
<rule ref="rulesets/java/basic.xml/DoubleCheckedLocking"><priority>1</priority></rule>
<rule ref="rulesets/java/basic.xml/ReturnFromFinallyBlock"><priority>1</priority></rule>
<rule ref="rulesets/java/empty.xml/EmptySynchronizedBlock"><priority>1</priority></rule>
<rule ref="rulesets/java/empty.xml/EmptyStaticInitializer"><priority>1</priority></rule>
<rule ref="rulesets/java/basic.xml/UnconditionalIfStatement"><priority>1</priority></rule>
<rule ref="rulesets/java/empty.xml/EmptyStatementNotInLoop"><priority>1</priority></rule>
<rule ref="rulesets/java/basic.xml/BooleanInstantiation"><priority>1</priority></rule>
<rule ref="rulesets/java/unnecessary.xml/UnnecessaryFinalModifier"><priority>1</priority></rule>
<rule ref="rulesets/java/basic.xml/CollapsibleIfStatements"><priority>1</priority></rule>
<rule ref="rulesets/java/unnecessary.xml/UselessOverridingMethod"><priority>1</priority></rule>
<rule ref="rulesets/java/basic.xml/ClassCastExceptionWithToArray"><priority>1</priority></rule>
<rule ref="rulesets/java/basic.xml/AvoidDecimalLiteralsInBigDecimalConstructor"><priority>1</priority></rule>
<rule ref="rulesets/java/unnecessary.xml/UselessOperationOnImmutable"><priority>1</priority></rule>
<rule ref="rulesets/java/basic.xml/MisplacedNullCheck"><priority>1</priority></rule>
<rule ref="rulesets/java/unnecessary.xml/UnusedNullCheckInEquals"><priority>1</priority></rule>
<rule ref="rulesets/java/basic.xml/BrokenNullCheck"><priority>1</priority></rule>
<rule ref="rulesets/java/basic.xml/BigIntegerInstantiation"><priority>1</priority></rule>
<rule ref="rulesets/java/basic.xml/AvoidMultipleUnaryOperators"><priority>1</priority></rule>
<rule ref="rulesets/java/empty.xml/EmptyInitializer"><priority>1</priority></rule>

<rule ref="rulesets/java/braces.xml/IfStmtsMustUseBraces"><priority>1</priority></rule>
<rule ref="rulesets/java/braces.xml/WhileLoopsMustUseBraces"><priority>1</priority></rule>
<rule ref="rulesets/java/braces.xml/IfElseStmtsMustUseBraces"><priority>1</priority></rule>
<rule ref="rulesets/java/braces.xml/ForLoopsMustUseBraces"><priority>1</priority></rule>

<rule ref="rulesets/java/unusedcode.xml/UnusedModifier"><priority>1</priority></rule>
<rule ref="rulesets/java/controversial.xml/DontImportSun"><priority>1</priority></rule>

<rule ref="rulesets/java/design.xml/SimplifyBooleanReturns"><priority>1</priority></rule>
<rule ref="rulesets/java/design.xml/SimplifyBooleanExpressions"><priority>1</priority></rule>
<rule ref="rulesets/java/design.xml/AvoidReassigningParameters"><priority>1</priority></rule>
<rule ref="rulesets/java/design.xml/FinalFieldCouldBeStatic"><priority>1</priority></rule>
<rule ref="rulesets/java/design.xml/NonStaticInitializer"><priority>1</priority></rule>
<rule ref="rulesets/java/design.xml/OptimizableToArrayCall"><priority>1</priority></rule>
<rule ref="rulesets/java/design.xml/BadComparison"><priority>1</priority></rule>
<rule ref="rulesets/java/design.xml/EqualsNull"><priority>1</priority></rule>
<rule ref="rulesets/java/design.xml/InstantiationToGetClass"><priority>1</priority></rule>
<rule ref="rulesets/java/design.xml/IdempotentOperations"><priority>1</priority></rule>
<rule ref="rulesets/java/design.xml/AssignmentToNonFinalStatic"><priority>1</priority></rule>
<rule ref="rulesets/java/design.xml/MissingStaticMethodInNonInstantiatableClass"><priority>1</priority></rule>
<rule ref="rulesets/java/design.xml/UseNotifyAllInsteadOfNotify"><priority>1</priority></rule>
<rule ref="rulesets/java/design.xml/AvoidInstanceofChecksInCatchClause"><priority>1</priority></rule>
<rule ref="rulesets/java/design.xml/SimplifyConditional"><priority>1</priority></rule>
<rule ref="rulesets/java/design.xml/UnnecessaryLocalBeforeReturn"><priority>1</priority></rule>
<rule ref="rulesets/java/design.xml/NonThreadSafeSingleton"><priority>1</priority></rule>
<rule ref="rulesets/java/design.xml/AvoidConstantsInterface"><priority>1</priority></rule>
<rule ref="rulesets/java/design.xml/UnsynchronizedStaticDateFormatter"><priority>1</priority></rule>
<rule ref="rulesets/java/design.xml/PreserveStackTrace"><priority>1</priority></rule>
<rule ref="rulesets/java/design.xml/UseCollectionIsEmpty"><priority>1</priority></rule>

<rule ref="rulesets/java/finalizers.xml/EmptyFinalizer"><priority>1</priority></rule>
<rule ref="rulesets/java/finalizers.xml/FinalizeOnlyCallsSuperFinalize"><priority>1</priority></rule>
<rule ref="rulesets/java/finalizers.xml/FinalizeOverloaded"><priority>1</priority></rule>
<rule ref="rulesets/java/finalizers.xml/FinalizeDoesNotCallSuperFinalize"><priority>1</priority></rule>
<rule ref="rulesets/java/finalizers.xml/FinalizeShouldBeProtected"><priority>1</priority></rule>
<rule ref="rulesets/java/finalizers.xml/AvoidCallingFinalize"><priority>1</priority></rule>

<rule ref="rulesets/java/imports.xml/DuplicateImports"><priority>1</priority></rule>
<rule ref="rulesets/java/imports.xml/DontImportJavaLang"><priority>1</priority></rule>
<rule ref="rulesets/java/imports.xml/UnusedImports"><priority>1</priority></rule>
<rule ref="rulesets/java/imports.xml/ImportFromSamePackage"><priority>1</priority></rule>

<rule ref="rulesets/java/logging-java.xml/MoreThanOneLogger"><priority>1</priority></rule>
<rule ref="rulesets/java/logging-java.xml/LoggerIsNotStaticFinal"><priority>1</priority></rule>

<rule ref="rulesets/java/migrating.xml/ReplaceVectorWithList"><priority>1</priority></rule>
<rule ref="rulesets/java/migrating.xml/ReplaceHashtableWithMap"><priority>1</priority></rule>
<rule ref="rulesets/java/migrating.xml/ReplaceEnumerationWithIterator"><priority>1</priority></rule>
<rule ref="rulesets/java/migrating.xml/AvoidEnumAsIdentifier"><priority>1</priority></rule>
<rule ref="rulesets/java/migrating.xml/AvoidAssertAsIdentifier"><priority>1</priority></rule>
<rule ref="rulesets/java/migrating.xml/IntegerInstantiation"><priority>1</priority></rule>
<rule ref="rulesets/java/migrating.xml/ByteInstantiation"><priority>1</priority></rule>
<rule ref="rulesets/java/migrating.xml/ShortInstantiation"><priority>1</priority></rule>
<rule ref="rulesets/java/migrating.xml/LongInstantiation"><priority>1</priority></rule>

<rule ref="rulesets/java/naming.xml/VariableNamingConventions"><priority>1</priority></rule>
<rule ref="rulesets/java/naming.xml/MethodNamingConventions"><priority>1</priority></rule>
<rule ref="rulesets/java/naming.xml/ClassNamingConventions"><priority>1</priority></rule>
<rule ref="rulesets/java/naming.xml/AvoidDollarSigns"><priority>1</priority></rule>
<rule ref="rulesets/java/naming.xml/MethodWithSameNameAsEnclosingClass"><priority>1</priority></rule>
<rule ref="rulesets/java/naming.xml/SuspiciousHashcodeMethodName"><priority>1</priority></rule>
<rule ref="rulesets/java/naming.xml/SuspiciousConstantFieldName"><priority>1</priority></rule>
<rule ref="rulesets/java/naming.xml/SuspiciousEqualsMethodName"><priority>1</priority></rule>
<rule ref="rulesets/java/naming.xml/NoPackage"><priority>1</priority></rule>
<rule ref="rulesets/java/naming.xml/PackageCase"><priority>1</priority></rule>

<rule ref="rulesets/java/optimizations.xml/LocalVariableCouldBeFinal"><priority>1</priority><properties><property name="violationSuppressXPath" value="//ForInit|//ForStatement/LocalVariableDeclaration"/></properties></rule>
<rule ref="rulesets/java/optimizations.xml/MethodArgumentCouldBeFinal"><priority>1</priority></rule>
<rule ref="rulesets/java/optimizations.xml/UseArrayListInsteadOfVector"><priority>1</priority></rule>
<rule ref="rulesets/java/optimizations.xml/SimplifyStartsWith"><priority>1</priority></rule>
<rule ref="rulesets/java/optimizations.xml/UseArraysAsList"><priority>1</priority></rule>
<rule ref="rulesets/java/optimizations.xml/AvoidArrayLoops"><priority>1</priority></rule>
<rule ref="rulesets/java/optimizations.xml/UnnecessaryWrapperObjectCreation"><priority>1</priority></rule>
<rule ref="rulesets/java/optimizations.xml/AddEmptyString"><priority>1</priority></rule>

<rule ref="rulesets/java/strictexception.xml/AvoidCatchingThrowable"><priority>1</priority></rule>
<rule ref="rulesets/java/strictexception.xml/SignatureDeclareThrowsException"><priority>1</priority></rule>
<rule ref="rulesets/java/strictexception.xml/ExceptionAsFlowControl"><priority>1</priority></rule>
<rule ref="rulesets/java/strictexception.xml/AvoidCatchingNPE"><priority>1</priority></rule>
<rule ref="rulesets/java/strictexception.xml/AvoidThrowingRawExceptionTypes"><priority>1</priority></rule>
<rule ref="rulesets/java/strictexception.xml/DoNotExtendJavaLangError"><priority>1</priority></rule>
<rule ref="rulesets/java/strictexception.xml/DoNotThrowExceptionInFinally"><priority>1</priority></rule>
<rule ref="rulesets/java/strictexception.xml/AvoidThrowingNewInstanceOfSameException"><priority>1</priority></rule>

<rule ref="rulesets/java/strings.xml/StringInstantiation"><priority>1</priority></rule>
<rule ref="rulesets/java/strings.xml/StringToString"><priority>1</priority></rule>
<rule ref="rulesets/java/strings.xml/InefficientStringBuffering"><priority>1</priority></rule>
<rule ref="rulesets/java/strings.xml/UnnecessaryCaseChange"><priority>1</priority></rule>
<rule ref="rulesets/java/strings.xml/UseStringBufferLength"><priority>1</priority></rule>
<rule ref="rulesets/java/strings.xml/AppendCharacterWithChar"><priority>1</priority></rule>
<rule ref="rulesets/java/strings.xml/UseIndexOfChar"><priority>1</priority></rule>
<rule ref="rulesets/java/strings.xml/InefficientEmptyStringCheck"><priority>1</priority></rule>
<rule ref="rulesets/java/strings.xml/UselessStringValueOf"><priority>1</priority></rule>
<rule ref="rulesets/java/strings.xml/StringBufferInstantiationWithChar"><priority>1</priority></rule>
<rule ref="rulesets/java/strings.xml/UseEqualsToCompareStrings"><priority>1</priority></rule>

<rule ref="rulesets/java/typeresolution.xml/UnusedImports"><priority>1</priority><properties><property name="violationSuppressXPath" value="//ImportDeclaration[@ImportOnDemand='true']"/></properties></rule>
<rule ref="rulesets/java/typeresolution.xml/SignatureDeclareThrowsException"><priority>1</priority></rule>

<rule ref="rulesets/java/unusedcode.xml/UnusedPrivateField"><priority>1</priority></rule>
<rule ref="rulesets/java/unusedcode.xml/UnusedLocalVariable"><priority>1</priority></rule>
<rule ref="rulesets/java/unusedcode.xml/UnusedPrivateMethod"><priority>1</priority></rule>
<rule ref="rulesets/java/unusedcode.xml/UnusedFormalParameter"><priority>1</priority></rule>

</ruleset>
