<?xml version="1.0"?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<ruleset name="commons-rng-customized"
    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>
    This ruleset checks the code for discouraged programming constructs.
  </description>

  <rule ref="category/java/bestpractices.xml">
    <exclude name="UseVarargs" />
    <!-- Allow private inner classes to access outer class methods/fields. -->
    <exclude name="AccessorMethodGeneration" />
  </rule>
  <rule ref="category/java/codestyle.xml">
    <exclude name="MethodArgumentCouldBeFinal" />
    <exclude name="ShortVariable" />
    <exclude name="LongVariable" />
    <exclude name="CommentDefaultAccessModifier" />
    <exclude name="DefaultPackage" />
    <exclude name="CallSuperInConstructor" />
    <exclude name="AbstractNaming" />
    <exclude name="UselessParentheses" />
    <exclude name="AtLeastOneConstructor" />
    <exclude name="GenericsNaming" />
    <exclude name="OnlyOneReturn" />
    <exclude name="UseUnderscoresInNumericLiterals" />
  </rule>
  <rule ref="category/java/design.xml">
    <exclude name="TooManyMethods" />
    <exclude name="LawOfDemeter" />
    <exclude name="NcssCount" />
    <exclude name="LoosePackageCoupling" />
  </rule>
  <rule ref="category/java/documentation.xml">
    <exclude name="CommentSize" />
  </rule>
  <rule ref="category/java/errorprone.xml">
    <exclude name="BeanMembersShouldSerialize" />
    <!-- This rule is known to be poor with Java 5 and later:
      https://github.com/pmd/pmd/issues/873 -->
    <exclude name="DataflowAnomalyAnalysis" />
  </rule>
  <rule ref="category/java/multithreading.xml">
    <!-- <exclude name="..." /> -->
  </rule>
  <rule ref="category/java/performance.xml">
    <!-- <exclude name="..." /> -->
  </rule>

  <!-- Rule customisations. -->

  <rule ref="category/java/bestpractices.xml/MethodReturnsInternalArray">
    <properties>
      <property name="violationSuppressXPath" value="//ClassOrInterfaceDeclaration[@SimpleName='ProviderBuilder']"/>
    </properties>
  </rule>
  <rule ref="category/java/bestpractices.xml/ArrayIsStoredDirectly">
    <properties>
      <!-- Array is generated internally in this case. -->
      <property name="violationSuppressXPath"
        value="//ClassOrInterfaceDeclaration[@SimpleName='PoissonSamplerCache' or @SimpleName='AliasMethodDiscreteSampler'
          or @SimpleName='GuideTableDiscreteSampler' or @SimpleName='SharedStateDiscreteProbabilitySampler'
          or @SimpleName='DirichletSampler']"/>
    </properties>
  </rule>
  <rule ref="category/java/bestpractices.xml/SystemPrintln">
    <properties>
      <property name="violationSuppressXPath"
        value="//ClassOrInterfaceDeclaration[@SimpleName='DiceGameApplication' or @SimpleName='ComputePi'
          or @SimpleName='UniformSamplingVisualCheckCommand' or @SimpleName='ProbabilityDensityApproximationCommand']"/>
    </properties>
  </rule>
  <rule ref="category/java/bestpractices.xml/UnusedPrivateField">
    <properties>
      <!-- Fields are used by picocli -->
      <property name="violationSuppressXPath" value="//ClassOrInterfaceDeclaration[
        @SimpleName='ProbabilityDensityApproximationCommand' or @SimpleName='ExamplesStressCommand'
        or @SimpleName='ExamplesSamplingCommand' or @SimpleName='UniformSamplingVisualCheckCommand']"/>
    </properties>
  </rule>
  <rule ref="category/java/bestpractices.xml/AccessorClassGeneration">
    <properties>
      <!-- False positive -->
      <property name="violationSuppressXPath" value="//ClassOrInterfaceDeclaration[@SimpleName='TSampler']"/>
    </properties>
  </rule>
  <rule ref="category/java/bestpractices.xml/AvoidReassigningParameters">
    <properties>
      <!-- Constructors can reassign their seed parameter after expanding it to the correct length -->
      <!-- Hash functions are optimised for minimum byte size to allow inlining -->
      <property name="violationSuppressXPath"
         value="./ancestor::ConstructorDeclaration[
           (matches(@Image, 'L(64|128)X[0-9]+(StarStar|Mix)') and @Arity=1 and @Public=true())
           or @Image='AbstractL64X128'] |
           ./ancestor::MethodDeclaration[@Name='stafford13' or @Name='lea64' or @Name='lea32'or @Name='murmur3']"/>
    </properties>
  </rule>

  <rule ref="category/java/codestyle.xml/ClassNamingConventions">
    <properties>
      <!-- Do not require Utils/Helper suffix -->
      <property name="violationSuppressXPath"
        value="//ClassOrInterfaceDeclaration[@SimpleName='ListSampler' or @SimpleName='ProviderBuilder'
          or @SimpleName='ThreadLocalRandomSource' or @SimpleName='SeedFactory'
          or @SimpleName='Coordinates' or @SimpleName='Hex' or @SimpleName='SpecialMath'
          or @SimpleName='Conversions' or @SimpleName='MixFunctions' or @SimpleName='LXMSupport'
          or @SimpleName='UniformRandomProviderSupport']"/>
      <!-- Allow samplers to have only factory constructors -->
      <property name="utilityClassPattern" value="[A-Z][a-zA-Z0-9]+(Utils?|Helper|Sampler)" />
    </properties>
  </rule>
  <rule ref="category/java/codestyle.xml/ShortMethodName">
    <properties>
      <!-- Allow samplers to have factory constructor method 'of' -->
      <property name="violationSuppressXPath" value="//ClassOrInterfaceDeclaration[matches(@SimpleName, '^.*Sampler$')]"/>
    </properties>
  </rule>
  <rule ref="category/java/codestyle.xml/FieldNamingConventions">
    <properties>
      <property name="violationSuppressXPath"
        value="//ClassOrInterfaceDeclaration[@SimpleName='ProbabilityDensityApproximationCommand']"/>
    </properties>
  </rule>
  <rule ref="category/java/codestyle.xml/LinguisticNaming">
    <properties>
      <!-- Allow Builder set methods to return the Builder (not void) -->
      <property name="violationSuppressXPath" value="//ClassOrInterfaceDeclaration[matches(@SimpleName, '^.*Builder$')]"/>
    </properties>
  </rule>

  <rule ref="category/java/design.xml/NPathComplexity">
    <properties>
      <!-- Increase from default of 200 -->
      <property name="violationSuppressXPath"
        value="//ClassOrInterfaceDeclaration[@SimpleName='LargeMeanPoissonSampler' or @SimpleName='MersenneTwister'
          or @SimpleName='ProbabilityDensityApproximationCommand']"/>
    </properties>
  </rule>
  <rule ref="category/java/design.xml/CyclomaticComplexity">
    <properties>
      <!-- Increase from default of 10 -->
      <property name="methodReportLevel" value="20"/>
    </properties>
  </rule>
  <rule ref="category/java/design.xml/ExcessiveImports">
    <properties>
      <property name="violationSuppressXPath" value="//ClassOrInterfaceDeclaration[@SimpleName='ProviderBuilder']"/>
    </properties>
  </rule>
  <rule ref="category/java/design.xml/CouplingBetweenObjects">
    <properties>
      <property name="violationSuppressXPath" value="//ClassOrInterfaceDeclaration[@SimpleName='ProviderBuilder']"/>
    </properties>
  </rule>
  <rule ref="category/java/design.xml/ExcessiveMethodLength">
    <properties>
      <!-- The length is due to comments -->
      <property name="violationSuppressXPath" value="//ClassOrInterfaceDeclaration[@SimpleName='AliasMethodDiscreteSampler'
        or @SimpleName='ProbabilityDensityApproximationCommand']"/>
    </properties>
  </rule>
  <rule ref="category/java/design.xml/ExcessiveClassLength">
    <properties>
      <!-- The length is due to multiple implementations as inner classes -->
      <property name="violationSuppressXPath" value="//ClassOrInterfaceDeclaration[@SimpleName='MarsagliaTsangWangDiscreteSampler'
        or @SimpleName='CompositeSamplers' or @SimpleName='StableSampler' or @SimpleName='ZigguratSampler']"/>
    </properties>
  </rule>
  <rule ref="category/java/design.xml/ExcessiveParameterList">
    <properties>
      <!-- The length is due to the size of the internal state saved in the state object -->
      <property name="violationSuppressXPath" value="//ClassOrInterfaceDeclaration[@SimpleName='LargeMeanPoissonSampler']"/>
    </properties>
  </rule>
  <rule ref="category/java/design.xml/LogicInversion">
    <properties>
      <!-- Logic inversion allows detection of NaN for parameters that are expected in a range -->
      <property name="violationSuppressXPath"
        value="//ClassOrInterfaceDeclaration[@SimpleName='GaussianSampler' or @SimpleName='StableSampler']"/>
    </properties>
  </rule>
  <rule ref="category/java/design.xml/ImmutableField">
    <properties>
      <!-- Fields are used by picocli -->
      <property name="violationSuppressXPath" value="//ClassOrInterfaceDeclaration[@SimpleName='BridgeTestCommand'
        or @SimpleName='ProbabilityDensityApproximationCommand' or @SimpleName='ExamplesStressCommand'
        or @SimpleName='ListCommand' or @SimpleName='OutputCommand'
        or @SimpleName='ResultsCommand' or @SimpleName='StressTestCommand'
        or @SimpleName='UniformSamplingVisualCheckCommand']"/>
    </properties>
  </rule>
  <rule ref="category/java/design.xml/AvoidThrowingNullPointerException">
    <properties>
      <!-- Local implementation of Objects.requireNonNull -->
      <property name="violationSuppressXPath" value="//ClassOrInterfaceDeclaration[@SimpleName='CompositeSamplers']"/>
    </properties>
  </rule>
  <rule ref="category/java/design.xml/CognitiveComplexity">
    <properties>
      <!-- Increase from default of 200 -->
      <property name="violationSuppressXPath"
        value="//ClassOrInterfaceDeclaration[@SimpleName='ChengBetaSampler' or @SimpleName='LargeMeanPoissonSampler'
          or @SimpleName='ZigguratSampler']"/>
    </properties>
  </rule>
  <rule ref="category/java/design.xml/UselessOverridingMethod">
    <properties>
      <!-- Methods document the size of the jump functions -->
      <property name="violationSuppressXPath"
        value="../MethodDeclaration[@Name='jump' or @Name='longJump']"/>
    </properties>
  </rule>

  <rule ref="category/java/errorprone.xml/AvoidLiteralsInIfCondition">
    <properties>
      <property name="ignoreMagicNumbers" value="-1,0,1" />
    </properties>
  </rule>
  <rule ref="category/java/errorprone.xml/AvoidFieldNameMatchingMethodName">
    <properties>
      <!-- Field INSTANCE matches instance() which returne a generic typed version of the instance.  -->
      <property name="violationSuppressXPath" value="//ClassOrInterfaceDeclaration[matches(@SimpleName, '^.*ObjectSamplerFactory$')]"/>
    </properties>
  </rule>

  <rule ref="category/java/multithreading.xml/UseConcurrentHashMap">
    <properties>
      <property name="violationSuppressXPath" value="//ClassOrInterfaceDeclaration[@SimpleName='DiscreteProbabilityCollectionSampler']"/>
    </properties>
  </rule>

  <rule ref="category/java/multithreading.xml/AvoidSynchronizedAtMethodLevel">
    <properties>
      <!-- Allows synchronized method when it is an override of the parent class -->
      <property name="violationSuppressXPath" value="//ClassOrInterfaceDeclaration[@SimpleName='JDKRandomBridge']"/>
    </properties>
  </rule>

</ruleset>
