<?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-statistics-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" />
    <!-- Inference 'Test' classes are not JUnit 4 tests. -->
    <exclude name="JUnit4TestShouldUseTestAnnotation" />
  </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" />
    <!-- We do use extra parentheses there as most people do not recall operator precedence,
         this means even if the parentheses are useless for the compiler, we don't consider
         them useless for the developer. This is the reason why we disable this rule. -->
    <exclude name="UselessParentheses" />
    <exclude name="AtLeastOneConstructor" />
    <exclude name="GenericsNaming" />
    <exclude name="OnlyOneReturn" />
    <exclude name="UseUnderscoresInNumericLiterals" />

    <!-- Disable this rule in favour of the more configurable rule in checkstyle. -->
    <exclude name="LocalVariableNamingConventions" />
  </rule>
  <rule ref="category/java/design.xml">
    <exclude name="TooManyMethods" />
    <exclude name="LawOfDemeter" />
    <exclude name="LoosePackageCoupling" />
  </rule>
  <rule ref="category/java/documentation.xml">
    <exclude name="CommentSize" />
  </rule>
  <rule ref="category/java/errorprone.xml">
    <!-- 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/ArrayIsStoredDirectly">
    <properties>
      <!-- Array is generated internally in this case. -->
      <property name="violationSuppressXPath" value="./ancestor-or-self::ClassOrInterfaceDeclaration[@SimpleName='DistributionException'
        or @SimpleName='ArrayRealSquareMatrix']"/>
    </properties>
  </rule>

  <rule ref="category/java/codestyle.xml/ShortMethodName">
    <properties>
      <!-- Allow 'of' for factory constructors. -->
      <property name="violationSuppressXPath"
        value="./ancestor-or-self::ClassOrInterfaceDeclaration[matches(@SimpleName, '^.*Distribution$')]
          or ../MethodDeclaration[@Name='sf']"/>
    </properties>
  </rule>
  <rule ref="category/java/codestyle.xml/ShortClassName">
    <properties>
      <property name="violationSuppressXPath"
        value="./ancestor-or-self::ClassOrInterfaceDeclaration[@SimpleName='DD'
          or @SimpleName='Two' or @SimpleName='One' or @SimpleName='Min' or @SimpleName='Max'
          or @SimpleName='Sum' or @SimpleName='Mean']"/>
    </properties>
  </rule>
  <rule ref="category/java/codestyle.xml/PrematureDeclaration">
    <properties>
      <!-- False positive as lastStartJ must be stored before startJ is recomputed -->
      <property name="violationSuppressXPath"
        value="./ancestor-or-self::MethodDeclaration[@Name='twoSampleTwoSidedPStabilizedInner']"/>
    </properties>
  </rule>
  <rule ref="category/java/codestyle.xml/LinguisticNaming">
    <properties>
      <!-- Allow builder pattern for configuring statistics for fluent chaining -->
      <property name="violationSuppressXPath"
        value="./ancestor-or-self::MethodDeclaration[@Name='setBiased' or @Name='setConfiguration']"/>
    </properties>
  </rule>

  <rule ref="category/java/documentation.xml/CommentSize">
    <properties>
      <property name="maxLines"      value="200"/>
      <property name="maxLineLength" value="256"/>
    </properties>
  </rule>

  <rule ref="category/java/design.xml/NPathComplexity">
    <properties>
      <property name="violationSuppressXPath"
        value="./ancestor-or-self::ClassOrInterfaceDeclaration[@SimpleName='AbstractContinuousDistribution'
          or @SimpleName='KolmogorovSmirnovTest' or @SimpleName='KolmogorovSmirnovDistribution'
          or @SimpleName='MannWhitneyUTest' or @SimpleName='BrentOptimizer']"/>
    </properties>
  </rule>
  <rule ref="category/java/design.xml/CyclomaticComplexity">
    <properties>
      <!-- Increase from default of 10. -->
      <property name="methodReportLevel" value="20"/>
      <property name="violationSuppressXPath"
        value="./ancestor-or-self::ClassOrInterfaceDeclaration[@SimpleName='KolmogorovSmirnovTest'
            or @SimpleName='DD' or @SimpleName='BrentOptimizer']"/>
    </properties>
  </rule>
  <rule ref="category/java/design.xml/AvoidDeeplyNestedIfStmts">
    <properties>
      <property name="violationSuppressXPath"
        value="./ancestor-or-self::ClassOrInterfaceDeclaration[@SimpleName='AbstractContinuousDistribution']"/>
    </properties>
  </rule>
  <rule ref="category/java/design.xml/NcssCount">
    <properties>
      <!-- Method length is due to comments. -->
      <property name="violationSuppressXPath"
        value="./ancestor-or-self::ClassOrInterfaceDeclaration[@SimpleName='KolmogorovSmirnovTest'
          or @SimpleName='KolmogorovSmirnovDistribution' or @SimpleName='DD'
          or @SimpleName='BracketFinder' or @SimpleName='BrentOptimizer']"/>
    </properties>
  </rule>
  <rule ref="category/java/design.xml/CognitiveComplexity">
    <properties>
      <!-- Methods AbstractContinuousDistribution inverseProbability (21) and
        searchPlateau (26) exceed threshold of 15. -->
      <property name="violationSuppressXPath"
        value="./ancestor-or-self::ClassOrInterfaceDeclaration[@SimpleName='AbstractContinuousDistribution'
          or @SimpleName='KolmogorovSmirnovTest' or @SimpleName='KolmogorovSmirnovDistribution'
          or @SimpleName='MannWhitneyUTest' or @SimpleName='BracketFinder'
          or @SimpleName='BrentOptimizer' or @SimpleName='UnconditionedExactTest']"/>
    </properties>
  </rule>
  <rule ref="category/java/design.xml/GodClass">
    <properties>
      <!-- Inference tests that compute p-values using complex methods trigger God class warnings. -->
      <property name="violationSuppressXPath"
        value="./ancestor-or-self::ClassOrInterfaceDeclaration[@SimpleName='NaturalRanking'
          or @SimpleName='KolmogorovSmirnovTest' or @SimpleName='DD' or @SimpleName='Arguments'
          or @SimpleName='MannWhitneyUTest' or @SimpleName='WilcoxonSignedRankTest'
          or @SimpleName='HypergeometricDistribution' or @SimpleName='UnconditionedExactTest'
          or @SimpleName='DoubleStatistics' or @SimpleName='IntStatistics'
          or @SimpleName='LongStatistics' or @SimpleName='Quantile']"/>
    </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="./ancestor-or-self::ClassOrInterfaceDeclaration[@SimpleName='Arguments'
          or @Name='Quantile']"/>
    </properties>
  </rule>
  <rule ref="category/java/design.xml/UselessOverridingMethod">
    <properties>
      <!-- overridden in the inference module for documentation -->
      <property name="violationSuppressXPath"
        value="./ancestor-or-self::ClassOrInterfaceDeclaration[matches(@SimpleName, '^.*Result$')]"/>
    </properties>
  </rule>

  <rule ref="category/java/errorprone.xml/AvoidLiteralsInIfCondition">
    <properties>
      <!-- Add 1 as a magic number. Allow use of integer literals for counts. -->
      <property name="ignoreMagicNumbers" value="-1,0,1" />
      <property name="violationSuppressXPath"
        value="./ancestor-or-self::MethodDeclaration[@Name='ldexp' or @Name='createMoment']
          or ./ancestor-or-self::ClassOrInterfaceDeclaration[@SimpleName='Median']"/>
    </properties>
  </rule>
  <rule ref="category/java/errorprone.xml/AvoidFieldNameMatchingMethodName">
    <properties>
      <!-- size() method return the list size.
        DD methods are hi() and lo() for the two parts of the double-double number. -->
      <property name="violationSuppressXPath"
        value="./ancestor-or-self::ClassOrInterfaceDeclaration[@SimpleName='IntList'
          or @SimpleName='DD' or @SimpleName='XYList' ]"/>
    </properties>
  </rule>
  <rule ref="category/java/errorprone.xml/TestClassWithoutTestCases">
    <properties>
      <property name="violationSuppressRegex"
        value=".*'BinomialTest'.*|.*'ChiSquareTest'.*|.*'FisherExactTest'.*|.*'GTest'.*|.*'KolmogorovSmirnovTest'.*|.*'MannWhitneyUTest'.*|.*'TTest'.*|.*'WilcoxonSignedRankTest'.*|.*'UnconditionedExactTest'.*"/>
    </properties>
  </rule>
  <rule ref="category/java/errorprone.xml/AvoidDecimalLiteralsInBigDecimalConstructor">
    <properties>
      <!-- Exact conversion from double to BigInteger is required. -->
      <property name="violationSuppressXPath"
        value="./ancestor-or-self::MethodDeclaration[@Name='toBigIntegerExact']"/>
    </properties>
  </rule>
  <rule ref="category/java/errorprone.xml/AssignmentInOperand">
    <properties>
      <property name="violationSuppressXPath"
        value="./ancestor-or-self::ClassOrInterfaceDeclaration[@SimpleName='NaNTransformers']"/>
    </properties>
  </rule>

  <rule ref="category/java/performance.xml/AvoidArrayLoops">
    <properties>
      <!-- False positive -->
      <property name="violationSuppressXPath"
        value="./ancestor-or-self::ClassOrInterfaceDeclaration[@SimpleName='ArrayRealSquareMatrix']"/>
    </properties>
  </rule>
  <rule ref="category/java/performance.xml/AvoidInstantiatingObjectsInLoops">
    <properties>
      <!-- MannWhitneyUTest: The resized array f is created inside a loop.
        UnconditionedExactTest: Creates a distribution in outer loop to control an inner loop.  -->
      <property name="violationSuppressXPath"
        value="./ancestor-or-self::ClassOrInterfaceDeclaration[@SimpleName='MannWhitneyUTest'
          or @SimpleName='UnconditionedExactTest']"/>
    </properties>
  </rule>

</ruleset>
