pmd.xml 2.85 KB
<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright 2014-present Open Networking Laboratory
  ~
  ~ Licensed 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 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    name="ONOS Rules"
    xmlns="http://pmd.sf.net/ruleset/1.0.0"
    xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd"
    xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd" >

    <description>ONOS PMD rules</description>

    <rule ref="rulesets/java/unnecessary.xml" >
        <exclude name="UselessParentheses" />
    </rule>
    <rule ref="rulesets/java/basic.xml">
      <exclude name="EmptyCatchBlock"/>
    </rule>
    <rule ref="rulesets/java/basic.xml/EmptyCatchBlock">
      <properties>
	<property name="allowCommentedBlocks" value="true"/>
      </properties>
    </rule>
    <rule ref="rulesets/java/unusedcode.xml">
      <!-- Explicit public keyword in interface methods is acceptable -->
      <exclude name="UnusedModifier" />
    </rule>
    <rule ref="rulesets/java/imports.xml"/>
    <rule ref="rulesets/java/optimizations.xml">
      <exclude name="LocalVariableCouldBeFinal" />
      <exclude name="MethodArgumentCouldBeFinal" />
      <exclude name="AvoidInstantiatingObjectsInLoops" />
    </rule>

    <rule ref="rulesets/java/strings.xml">
      <exclude name="AvoidDuplicateLiterals" />
    </rule>
    <rule ref="rulesets/java/braces.xml"/>
    <rule ref="rulesets/java/naming.xml">
      <exclude name="AvoidInstantiatingObjectsInLoops" />
      <exclude name="ShortClassName" />
      <exclude name="ShortMethodName" />
      <exclude name="ShortVariable" />
      <exclude name="LongVariable" />
    </rule>
    <rule ref="rulesets/java/naming.xml/VariableNamingConventions">
      <properties>
	<!--  ONOS allows the name "log" for static final Loggers -->
	<property name="violationSuppressRegex" value=".*'log'.*"/>
      </properties>
    </rule>

    <rule ref="rulesets/java/clone.xml"/>
    <rule ref="rulesets/java/strictexception.xml"/>
    <rule ref="rulesets/java/design.xml">
      <exclude name="GodClass" />
    </rule>
    <rule ref="rulesets/java/coupling.xml">
      <exclude name="LawOfDemeter" />
      <exclude name="ExcessiveImports" />
      <!-- Suppress Removed misconfigured rule warning -->
      <exclude name="LoosePackageCoupling" />
    </rule>
</ruleset>