<?xml version="1.0"?>
<ruleset name="JOSM ruleset"
    xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">
 
  <description>JOSM PMD ruleset</description>
 
  <!-- <rule ref="rulesets/java/basic.xml"/>
  <rule ref="rulesets/java/braces.xml"/>
  <rule ref="rulesets/java/clone.xml"/>
  <rule ref="rulesets/java/codesize.xml"/>
  <rule ref="rulesets/java/comments.xml"/>
  <rule ref="rulesets/java/design.xml"/>
  <rule ref="rulesets/java/empty.xml"/>
  <rule ref="rulesets/java/finalizers.xml"/>
  <rule ref="rulesets/java/imports.xml"/>
  <rule ref="rulesets/java/migrating.xml"/>-->
  <rule ref="rulesets/java/naming.xml">
  	<exclude name="AbstractNaming"/>
  	<exclude name="AvoidFieldNameMatchingMethodName"/>
  	<exclude name="AvoidFieldNameMatchingTypeName"/>
  	<exclude name="BooleanGetMethodName"/>
  	<exclude name="LongVariable"/>
  	<exclude name="ShortClassName"/>
  	<exclude name="ShortMethodName"/>
  	<exclude name="ShortVariable"/>
  	<exclude name="MethodNamingConventions"/>
  	<exclude name="VariableNamingConventions"/>
  </rule>
  <rule ref="rulesets/java/naming.xml/ShortMethodName">
    <properties>
        <property name="violationSuppressXPath" value="//MethodDeclarator[@Image='at' or @Image='ht' or @Image='of' or @Image='ok' or @Image='tr']
        	| //MethodDeclarator/../../Annotation/MarkerAnnotation/Name[@Image='Deprecated']
        	| //MethodDeclarator/../../../..[@Image='LambertConformalConic']"/>
    </properties>
  </rule>
  <rule ref="rulesets/java/naming.xml/MethodNamingConventions">
    <properties>
        <property name="violationSuppressXPath" value="//MethodDeclarator/../../../..[@Image='Functions' or @Image='PseudoClasses' or @Image='Role' or @Image='TaggingPreset']"/>
    </properties>
  </rule>
  <rule ref="rulesets/java/naming.xml/VariableNamingConventions">
    <properties>
        <property name="violationSuppressXPath" value="//FieldDeclaration[@Public='true']|//FieldDeclaration/../Annotation/MarkerAnnotation/Name[@Image='pref']"/>
    </properties>
  </rule>
  <rule ref="rulesets/java/naming.xml/LongVariable">
    <properties>
        <property name="minimum" value="44"/>
    </properties>
  </rule>
  <rule ref="rulesets/java/optimizations.xml">
  	<exclude name="LocalVariableCouldBeFinal"/>
  	<exclude name="MethodArgumentCouldBeFinal"/>
  	<exclude name="AvoidInstantiatingObjectsInLoops"/>
  	<exclude name="PrematureDeclaration"/>
  	<exclude name="SimplifyStartsWith"/>
  	<exclude name="UseStringBufferForStringAppends"/>
  	<exclude name="UseArrayListInsteadOfVector"/>
  </rule>
  <rule ref="rulesets/java/strictexception.xml">
  	<exclude name="ExceptionAsFlowControl"/>
  	<exclude name="AvoidCatchingGenericException"/>
  	<exclude name="AvoidRethrowingException"/>
  </rule>
  <rule ref="rulesets/java/strings.xml">
  	<exclude name="AvoidDuplicateLiterals"/>
  	<exclude name="ConsecutiveLiteralAppends"/>
  	<exclude name="AvoidStringBufferField"/>
  	<exclude name="StringToString"/>
  	<exclude name="UselessStringValueOf"/>
  	<exclude name="InefficientEmptyStringCheck"/>
  </rule>
  <rule ref="rulesets/java/typeresolution.xml">
  	<exclude name="LooseCoupling"/>
  	<exclude name="SignatureDeclareThrowsException"/>
  </rule>
  <rule ref="rulesets/java/typeresolution.xml/SignatureDeclareThrowsException">
    <properties>
        <property name="violationSuppressXPath" value="//MethodDeclaration/../Annotation/MarkerAnnotation/Name[@Image='Override']"/>
        <property name="IgnoreJUnitCompletely" value="true"/>
    </properties>
  </rule>
  <rule ref="rulesets/java/unnecessary.xml">
  	<exclude name="UselessParentheses"/>
  	<exclude name="UselessOverridingMethod"/>
  </rule>
  <rule ref="rulesets/java/unusedcode.xml">
  	<exclude name="UnusedFormalParameter"/>
  </rule>
  <rule ref="rulesets/java/unusedcode.xml/UnusedFormalParameter">
    <properties>
        <property name="violationSuppressXPath" value="//Annotation[MarkerAnnotation/Name/@Image='Deprecated']/..[MethodDeclaration|ConstructorDeclaration]"/>
    </properties>
  </rule>

</ruleset>