blob: d37ef446139b4e9211e64858ce3a42c7b9b6be1c [file] [log] [blame]
<?xml version="1.0"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this work except in compliance with the License.
You may obtain a copy of the License in the LICENSE file, or 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="Aurora"
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>
Aurora PMD ruleset for all sources.
</description>
<rule ref="rulesets/java/basic.xml"/>
<rule ref="rulesets/java/braces.xml"/>
<rule ref="rulesets/java/unnecessary.xml"/>
<rule ref="rulesets/java/unusedcode.xml"/>
<rule ref="rulesets/java/naming.xml">
<!-- Requiring longer variable names can be cumbersome when applied globally. -->
<exclude name="ShortVariable"/>
<!-- Requiring shorter variable names can be cumbersome when applied globally. -->
<exclude name="LongVariable"/>
<!-- Short method names are useful on occasion, such as with factory methods: Rate.of(...). -->
<exclude name="ShortMethodName"/>
<!-- TODO(wfarner): Enable this if/when we have automatic transaction management, rather than
the classes in org.apache.aurora.scheduler.storage.Storage (e.g. Work). -->
<exclude name="AbstractNaming"/>
<!-- There are rare, but valid, cases where short class names are useful. -->
<exclude name="ShortClassName"/>
</rule>
<rule ref="rulesets/java/empty.xml">
<!-- Configured below -->
<exclude name="EmptyCatchBlock"/>
</rule>
<rule ref="rulesets/java/empty.xml/EmptyCatchBlock">
<properties>
<!-- Some APIs, like the Java Reflection API, use exceptions to indicate the absence of
a value and we legitimately want to ignore them. -->
<property name="allowCommentedBlocks" value="true"/>
</properties>
</rule>
<rule ref="rulesets/java/imports.xml">
<!-- We frequently use static imports for enum fields (making other code more concise), but
those trip this rule. -->
<exclude name="TooManyStaticImports"/>
</rule>
<rule ref="rulesets/java/logging-java.xml">
<!-- It's valid to inject the logger, and in some cases preferable. -->
<exclude name="LoggerIsNotStaticFinal"/>
<!-- In practice, we don't have high enough log volume for this rule to be useful. -->
<exclude name="GuardLogStatementJavaUtil"/>
<exclude name="MoreThanOneLogger"/>
</rule>
</ruleset>