[doc] Mention rule categories

This commit is contained in:
Andreas Dangel
2017-11-19 10:30:38 +01:00
parent ca3960a106
commit 9b8571e688

View File

@ -1,18 +1,43 @@
---
title: Understanding Rulesets
permalink: pmd_userdocs_understanding_rulesets.html
summary: Rulesets are collections of rules
last_updated: September 2017
summary: Rules belong to categories and rulesets are custom collections of rules
last_updated: November 2017
---
## Rule Categories
Since PMD 6.0.0, all provided built-in rules are sorted into one of eight categories:
1. **Best Practices**: These are rules which enforce generally accepted best practices.
2. **Code Style**: These rules enforce a specific coding style.
3. **Design**: Rules that help you discover design issues.
4. **Documentation**: These rules are related to code documentation.
5. **Error Prone**: Rules to detect constructs that are either broken, extremely confusing or prone to runtime errors.
6. **Multithreading**: These are rules that flag issues when dealing with multiple threads of execution.
7. **Performance**: Rules that flag suboptimal code.
8. **Security**: Rules that flag potential security flaws.
These categories help you to find rules and figure out the relevance and impact for your project.
You can find the available rules under "Rule Reference" in the menu. Each languages has its own rule
index, e.g. [Java Rules](pmd_rules_java.html) or [JavaScript Rules](pmd_rules_ecmascript.html).
{% include note.html content="Not all supported languages provide rules in all categories yet. " %}
## Rulesets
There are two major use cases:
1. When defining a new rule, the rule needs to be defined in a ruleset. PMD's built-in rules
are defined in special rulesets from which the rule reference documentation is generated,
are defined in special rulesets which form the eight categories mentioned above.
From these rulesets the rule reference documentation is generated,
see [Java Rules](pmd_rules_java.html) for an example.
Similar rules are grouped together into the same category, like [Java Best Practices](pmd_rules_java_bestpractices.html)
which contains rules which enforce generally accepted best practices.
which contains rules which enforce generally accepted best practices. Each category uses its own
ruleset file.
2. When executing PMD, you need to tell, which rules should be executed. You could directly point to the
built-in rulesets, but then you might be overwhelmed by the found violations. As described