<?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="Default Maven PMD Plugin 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.io/ruleset_2_0_0.xsd">

    <description>
        PMD Ruleset for Apache Ignite
    </description>

    <rule ref="category/java/errorprone.xml/EmptyFinallyBlock"/>
    <rule ref="category/java/errorprone.xml/AvoidCatchingNPE"/>
    <rule ref="category/java/errorprone.xml/BrokenNullCheck"/>
    <rule ref="category/java/errorprone.xml/EmptySwitchStatements"/>
    <rule ref="category/java/errorprone.xml/EmptyStatementNotInLoop"/>
    <rule ref="category/java/errorprone.xml/EmptySynchronizedBlock"/>
    <rule ref="category/java/errorprone.xml/UselessOperationOnImmutable"/>

    <rule ref="category/java/bestpractices.xml/UnusedLocalVariable"/>
    <rule ref="category/java/bestpractices.xml/UnusedPrivateField"/>
    <!--
        UnusedPrivateMethod has a known bug which leads to false positive triggering if
        method signature contains generic parameter and\or descendant class is passed as parameter.
        See for details: https://github.com/pmd/pmd/issues/770
    -->
    <!--    <rule ref="category/java/bestpractices.xml/UnusedPrivateMethod" />-->

</ruleset>
