## Uses of Interface
net.sourceforge.pmd.Rule

Packages that use Rule
Package | Description
--- | ---
net.sourceforge.pmd | This is the PMD programming mistake detector.
net.sourceforge.pmd.benchmark |
net.sourceforge.pmd.lang.ecmascript |
net.sourceforge.pmd.lang.ecmascript.rule |
net.sourceforge.pmd.lang.ecmascript.rule.basic |
net.sourceforge.pmd.lang.java.ast |
net.sourceforge.pmd.lang.java.rule |
net.sourceforge.pmd.lang.java.rule.basic |
net.sourceforge.pmd.lang.java.rule.codesize |
net.sourceforge.pmd.lang.java.rule.comments |
net.sourceforge.pmd.lang.java.rule.controversial |
net.sourceforge.pmd.lang.java.rule.coupling |
net.sourceforge.pmd.lang.java.rule.design |
net.sourceforge.pmd.lang.java.rule.finalizers |
net.sourceforge.pmd.lang.java.rule.imports |
net.sourceforge.pmd.lang.java.rule.javabeans |
net.sourceforge.pmd.lang.java.rule.junit |
net.sourceforge.pmd.lang.java.rule.logging |
net.sourceforge.pmd.lang.java.rule.migrating |
net.sourceforge.pmd.lang.java.rule.naming |
net.sourceforge.pmd.lang.java.rule.optimizations |
net.sourceforge.pmd.lang.java.rule.strictexception |
net.sourceforge.pmd.lang.java.rule.strings |
net.sourceforge.pmd.lang.java.rule.sunsecure |
net.sourceforge.pmd.lang.java.rule.unnecessary |
net.sourceforge.pmd.lang.java.rule.unusedcode |
net.sourceforge.pmd.lang.java.typeresolution.rules |
net.sourceforge.pmd.lang.java.typeresolution.rules.imports |
net.sourceforge.pmd.lang.jsp.rule |
net.sourceforge.pmd.lang.jsp.rule.basic |
net.sourceforge.pmd.lang.rule |
net.sourceforge.pmd.lang.rule.properties |
net.sourceforge.pmd.lang.rule.stat |
net.sourceforge.pmd.lang.xml |
net.sourceforge.pmd.lang.xml.rule |
net.sourceforge.pmd.util.designer |

### Uses of Rule in net.sourceforge.pmd

Methods in net.sourceforge.pmd that return Rule
Modifier and Type | Method and Description
--- | ---
`Rule` | RuleViolation.`getRule()` Get the Rule which identified this violation.
`Rule` | RuleSets.`getRuleByName(String ruleName)` Returns the first Rule found with the given name.
`Rule` | RuleSet.`getRuleByName(String ruleName)` Returns the first Rule found with the given name (case-sensitive).
`Rule` | Report.RuleConfigurationError.`rule()`

Methods in net.sourceforge.pmd that return types with arguments of type Rule
Modifier and Type | Method and Description
--- | ---
`Set<Rule>` | RuleSets.`getAllRules()` Return all rules from all rulesets.
`Collection<Rule>` | RuleSet.`getRules()` Returns the actual Collection of rules in this ruleset

Methods in net.sourceforge.pmd with parameters of type Rule
Modifier and Type | Method and Description
--- | ---
`void` | RuleSet.`addRule(Rule rule)` Add a new rule to this ruleset.
`void` | RuleSet.`addRuleByReference(String ruleSetFileName, Rule rule)` Add a new rule by reference to this ruleset.
`boolean` | RuleSet.`addRuleIfNotExists(Rule rule)` Only adds a rule to the ruleset if no rule with the same name for the same language was added before, so that the existent rule configuration won't be overridden.
`boolean` | RuleSet.`addRuleReplaceIfExists(Rule rule)` Adds a rule.
`static boolean` | RuleSet.`applies(Rule rule, LanguageVersion languageVersion)` Does the given Rule apply to the given LanguageVersion?
`static RuleSet` | RuleSet.`createFor(String name, Rule... theRules)` A convenience constructor
`String` | PropertyDescriptor.`propertyErrorFor(Rule rule)` A convenience method that returns an error string if the rule holds onto a property value that has a problem.

Method parameters in net.sourceforge.pmd with type arguments of type Rule
Modifier and Type | Method and Description
--- | ---
`void` | RuleSets.`removeDysfunctionalRules(Collection<Rule> collector)` Remove and collect any rules that report problems.
`void` | RuleSet.`removeDysfunctionalRules(Collection<Rule> collector)` Remove and collect any misconfigured rules.

Constructors in net.sourceforge.pmd with parameters of type Rule
Constructor and Description
`Report.RuleConfigurationError(Rule theRule, String theIssue)`

### Uses of Rule in net.sourceforge.pmd.benchmark

Fields in net.sourceforge.pmd.benchmark declared as Rule
Modifier and Type | Field and Description
--- | ---
`Rule` | RuleDuration.`rule`

Constructors in net.sourceforge.pmd.benchmark with parameters of type Rule
Constructor and Description
`RuleDuration(long elapsed, Rule rule)`

### Uses of Rule in net.sourceforge.pmd.lang.ecmascript

Constructors in net.sourceforge.pmd.lang.ecmascript with parameters of type Rule
Constructor and Description
`EcmascriptParserOptions(Rule rule)`

### Uses of Rule in net.sourceforge.pmd.lang.ecmascript.rule

Classes in net.sourceforge.pmd.lang.ecmascript.rule that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `AbstractEcmascriptRule`
`class` | `EcmascriptXPathRule`

Methods in net.sourceforge.pmd.lang.ecmascript.rule with parameters of type Rule
Modifier and Type | Method and Description
--- | ---
`protected RuleViolation` | EcmascriptRuleViolationFactory.`createRuleViolation(Rule rule, RuleContext ruleContext, Node node, String message)`
`protected RuleViolation` | EcmascriptRuleViolationFactory.`createRuleViolation(Rule rule, RuleContext ruleContext, Node node, String message, int beginLine, int endLine)`
`protected void` | EcmascriptRuleChainVisitor.`visit(Rule rule, Node node, RuleContext ctx)`

### Uses of Rule in net.sourceforge.pmd.lang.ecmascript.rule.basic

Classes in net.sourceforge.pmd.lang.ecmascript.rule.basic that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `ConsistentReturnRule`

### Uses of Rule in net.sourceforge.pmd.lang.java.ast

Methods in net.sourceforge.pmd.lang.java.ast with parameters of type Rule
Modifier and Type | Method and Description
--- | ---
`boolean` | ASTTypeDeclaration.`hasSuppressWarningsAnnotationFor(Rule rule)`
`boolean` | ASTLocalVariableDeclaration.`hasSuppressWarningsAnnotationFor(Rule rule)`
`boolean` | CanSuppressWarnings.`hasSuppressWarningsAnnotationFor(Rule rule)`
`boolean` | ASTClassOrInterfaceBodyDeclaration.`hasSuppressWarningsAnnotationFor(Rule rule)`
`boolean` | ASTFormalParameter.`hasSuppressWarningsAnnotationFor(Rule rule)`
`boolean` | ASTAnnotation.`suppresses(Rule rule)`

### Uses of Rule in net.sourceforge.pmd.lang.java.rule

Classes in net.sourceforge.pmd.lang.java.rule that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `AbstractInefficientZeroCheck` This is an abstract rule for patterns which compare a method invocation to 0.
`class` | `AbstractJavaRule`
`class` | `AbstractPoorMethodCall` Detects and flags the occurrences of specific method calls against an instance of a designated class.
`class` | `AbstractStatisticalJavaRule`
`class` | `GenericLiteralCheckerRule` This class allow to match a Literal (most likely a String) with a regex pattern.
`class` | `StringConcatenationRule`
`class` | `SymbolTableTestRule`
`class` | `UselessAssignment`

Methods in net.sourceforge.pmd.lang.java.rule with parameters of type Rule
Modifier and Type | Method and Description
--- | ---
`protected RuleViolation` | JavaRuleViolationFactory.`createRuleViolation(Rule rule, RuleContext ruleContext, Node node, String message)`
`protected RuleViolation` | JavaRuleViolationFactory.`createRuleViolation(Rule rule, RuleContext ruleContext, Node node, String message, int beginLine, int endLine)`
`protected void` | JavaRuleChainVisitor.`visit(Rule rule, Node node, RuleContext ctx)`

Constructors in net.sourceforge.pmd.lang.java.rule with parameters of type Rule
Constructor and Description
`JavaRuleViolation(Rule rule, RuleContext ctx, JavaNode node, String message)`
`JavaRuleViolation(Rule rule, RuleContext ctx, JavaNode node, String message, int beginLine, int endLine)`

### Uses of Rule in net.sourceforge.pmd.lang.java.rule.basic

Classes in net.sourceforge.pmd.lang.java.rule.basic that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `AvoidBranchingStatementAsLastInLoopRule`
`class` | `AvoidMultipleUnaryOperatorsRule`
`class` | `AvoidUsingHardCodedIPRule`
`class` | `AvoidUsingOctalValuesRule`
`class` | `BigIntegerInstantiationRule`
`class` | `BooleanInstantiationRule` Avoid instantiating Boolean objects; you can reference Boolean.TRUE, Boolean.FALSE, or call Boolean.valueOf() instead.
`class` | `BrokenNullCheckRule`
`class` | `CheckResultSetRule` Rule that verifies, that the return values of next(), first(), last(), etc.
`class` | `CheckSkipResultRule`
`class` | `DoubleCheckedLockingRule` void method() { if(x == null) { synchronized(this){ if(x == null) { x = new | method(); } } } 1.
`class` | `OverrideBothEqualsAndHashcodeRule`

### Uses of Rule in net.sourceforge.pmd.lang.java.rule.codesize

Classes in net.sourceforge.pmd.lang.java.rule.codesize that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `AbstractNcssCountRule` Abstract superclass for NCSS counting methods.
`class` | `CyclomaticComplexityRule`
`class` | `ExcessiveClassLengthRule` This rule detects when a class exceeds a certain threshold.
`class` | `ExcessiveMethodLengthRule` This rule detects when a method exceeds a certain threshold.
`class` | `ExcessiveParameterListRule` This rule detects an abnormally long parameter list.
`class` | `ExcessivePublicCountRule`
`class` | `NcssConstructorCountRule` Non-commented source statement counter for constructors.
`class` | `NcssMethodCountRule` Non-commented source statement counter for methods.
`class` | `NcssTypeCountRule` Non-commented source statement counter for type declarations.
`class` | `NPathComplexityRule` NPath complexity is a measurement of the acyclic execution paths through a function.
`class` | `TooManyFieldsRule`

### Uses of Rule in net.sourceforge.pmd.lang.java.rule.comments

Classes in net.sourceforge.pmd.lang.java.rule.comments that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `AbstractCommentRule`
`class` | `CodeInCommentsRule`
`class` | `CommentContentRule` A rule that checks for illegal words in the comment text.
`class` | `CommentRequiredRule`
`class` | `CommentSizeRule` A rule to manage those who just can't shut up...
`class` | `HeaderCommentsRule` Restrictions regarding the legal placement and content of the file header.
`class` | `JavadocRule`

### Uses of Rule in net.sourceforge.pmd.lang.java.rule.controversial

Classes in net.sourceforge.pmd.lang.java.rule.controversial that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `AssignmentInOperandRule`
`class` | `DataflowAnomalyAnalysisRule` Starts path search for each method and runs code if found.
`class` | `DontImportSunRule`
`class` | `NullAssignmentRule`
`class` | `OnlyOneReturnRule`
`class` | `SuspiciousOctalEscapeRule`

Constructors in net.sourceforge.pmd.lang.java.rule.controversial with parameters of type Rule
Constructor and Description
`DaaRuleViolation(Rule rule, RuleContext ctx, Node node, String type, String msg, String var, int beginLine, int endLine)`

### Uses of Rule in net.sourceforge.pmd.lang.java.rule.coupling

Classes in net.sourceforge.pmd.lang.java.rule.coupling that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `CouplingBetweenObjectsRule` CouplingBetweenObjects attempts to capture all unique Class attributes, local variables, and return types to determine how many objects a class is coupled to.
`class` | `ExcessiveImportsRule` ExcessiveImports attempts to count all unique imports a class contains.
`class` | `LawOfDemeterRule` This rule can detect possible violations of the Law of Demeter.
`class` | `LooseCouplingRule`
`class` | `LoosePackageCouplingRule` The loose package coupling Rule can be used to ensure coupling outside of a package hierarchy is minimized to all but an allowed set of classes from within the package hierarchy.

### Uses of Rule in net.sourceforge.pmd.lang.java.rule.design

Classes in net.sourceforge.pmd.lang.java.rule.design that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `AccessorClassGenerationRule` 1.
`class` | `AssignmentToNonFinalStaticRule`
`class` | `AvoidDeeplyNestedIfStmtsRule`
`class` | `AvoidReassigningParametersRule`
`class` | `CloseResourceRule` Makes sure you close your database connections.
`class` | `CompareObjectsWithEqualsRule`
`class` | `ConfusingTernaryRule` if (x !
`class` | `ConstructorCallsOverridableMethodRule` Searches through all methods and constructors called from constructors.
`class` | `ExcessiveLengthRule` This is a common super class for things which have excessive length.
`class` | `ExcessiveNodeCountRule` This is a common super class for things which shouldn't have excessive nodes underneath.
`class` | `GenericClassCounterRule` A generic rule that can be configured to "count" classes of certain type based on either their name (full name, prefix, suffixes anything can be matched with a regex), and/or their type.
`class` | `GodClassRule` The God Class Rule detects a the God Class design flaw using metrics.
`class` | `IdempotentOperationsRule`
`class` | `ImmutableFieldRule`
`class` | `NonThreadSafeSingletonRule`
`class` | `PositionalIteratorRule`
`class` | `PreserveStackTraceRule`
`class` | `SimplifyBooleanReturnsRule`
`class` | `SingularFieldRule`
`class` | `SwitchDensityRule`
`class` | `UnnecessaryLocalBeforeReturnRule`
`class` | `UnsynchronizedStaticDateFormatterRule` Using a DateFormatter (SimpleDateFormatter) which is static can cause unexpected results when used in a multi-threaded environment.
`class` | `UseCollectionIsEmptyRule` Detect structures like "foo.size() == 0" and suggest replacing them with foo.isEmpty().
`class` | `UseSingletonRule`

### Uses of Rule in net.sourceforge.pmd.lang.java.rule.finalizers

Classes in net.sourceforge.pmd.lang.java.rule.finalizers that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `AvoidCallingFinalizeRule`

### Uses of Rule in net.sourceforge.pmd.lang.java.rule.imports

Classes in net.sourceforge.pmd.lang.java.rule.imports that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `DontImportJavaLangRule`
`class` | `DuplicateImportsRule`
`class` | `ImportFromSamePackageRule`
`class` | `UnnecessaryFullyQualifiedNameRule`
`class` | `UnusedImportsRule`

### Uses of Rule in net.sourceforge.pmd.lang.java.rule.javabeans

Classes in net.sourceforge.pmd.lang.java.rule.javabeans that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `BeanMembersShouldSerializeRule`

### Uses of Rule in net.sourceforge.pmd.lang.java.rule.junit

Classes in net.sourceforge.pmd.lang.java.rule.junit that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `AbstractJUnitRule`
`class` | `JUnitAssertionsShouldIncludeMessageRule`
`class` | `JUnitTestsShouldIncludeAssertRule`
`class` | `TestClassWithoutTestCasesRule`

### Uses of Rule in net.sourceforge.pmd.lang.java.rule.logging

Classes in net.sourceforge.pmd.lang.java.rule.logging that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `MoreThanOneLoggerRule`

### Uses of Rule in net.sourceforge.pmd.lang.java.rule.migrating

Classes in net.sourceforge.pmd.lang.java.rule.migrating that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `JUnitUseExpectedRule` This rule finds code like this: public void testFoo() { try { doSomething(); fail("should have thrown an exception"); } catch (Exception e) { } } In JUnit 4, use @Test(expected = Exception.class)
`class` | `UnnecessaryCastRule`

### Uses of Rule in net.sourceforge.pmd.lang.java.rule.naming

Classes in net.sourceforge.pmd.lang.java.rule.naming that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `AvoidDollarSignsRule`
`class` | `AvoidFieldNameMatchingMethodNameRule`
`class` | `AvoidFieldNameMatchingTypeNameRule`
`class` | `ClassNamingConventionsRule`
`class` | `MethodNamingConventionsRule`
`class` | `MethodWithSameNameAsEnclosingClassRule`
`class` | `SuspiciousHashcodeMethodNameRule`
`class` | `VariableNamingConventionsRule`

### Uses of Rule in net.sourceforge.pmd.lang.java.rule.optimizations

Classes in net.sourceforge.pmd.lang.java.rule.optimizations that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `AbstractOptimizationRule` Base class with utility methods for optimization rules
`class` | `AvoidInstantiatingObjectsInLoopsRule`
`class` | `LocalVariableCouldBeFinalRule`
`class` | `MethodArgumentCouldBeFinalRule`
`class` | `PrematureDeclarationRule` Checks for variables in methods that are defined before they are really needed.
`class` | `RedundantFieldInitializerRule` Detects redundant field initializers, i.e. the field initializer expressions the JVM would assign by default.
`class` | `UnnecessaryWrapperObjectCreationRule`
`class` | `UseStringBufferForStringAppendsRule`

### Uses of Rule in net.sourceforge.pmd.lang.java.rule.strictexception

Classes in net.sourceforge.pmd.lang.java.rule.strictexception that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `AvoidCatchingThrowableRule` Finds `catch` statements containing `throwable` as the type definition.
`class` | `ExceptionAsFlowControlRule` Catches the use of exception statements as a flow control device.
`class` | `SignatureDeclareThrowsExceptionRule`

### Uses of Rule in net.sourceforge.pmd.lang.java.rule.strings

Classes in net.sourceforge.pmd.lang.java.rule.strings that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `AppendCharacterWithCharRule` This rule finds the following: StringBuffer.append("c"); // appends a single character It is preferable to use StringBuffer.append('c'); // appends a single character Implementation of PMD RFE 1373863
`class` | `AvoidDuplicateLiteralsRule`

`class`

`ConsecutiveLiteralAppendsRule`
This rule finds concurrent calls to StringBuffer/Builder.append where String literals are used It would be much better to make these calls using one call to .append

example:

StringBuilder buf = new StringBuilder(); buf.append("Hello"); buf.append(" ").append("World");

This would be more eloquently put as:

StringBuilder buf = new StringBuilder(); buf.append("Hello World");

The rule takes one parameter, threshold, which defines the lower limit of consecutive appends before a violation is created.

`class` | `InefficientEmptyStringCheckRule` This rule finds code which inefficiently determines empty strings.
`class` | `InefficientStringBufferingRule` How this rule works: find additive expressions: + check that the addition is between anything other than two literals if true and also the parent is StringBuffer constructor or append, report a violation.
`class` | `InsufficientStringBufferDeclarationRule` This rule finds StringBuffers which may have been pre-sized incorrectly See http://sourceforge.net/forum/forum.php?
`class` | `StringInstantiationRule`
`class` | `StringToStringRule`
`class` | `UnnecessaryCaseChangeRule`
`class` | `UseIndexOfCharRule`
`class` | `UselessStringValueOfRule`
`class` | `UseStringBufferLengthRule` This rule finds places where StringBuffer.toString() is called just to see if the string is 0 length by either using .equals("") or toString().length() StringBuffer sb = new StringBuffer("some string"); if (sb.toString().equals("")) { // this is wrong } if (sb.length() == 0) { // this is right }

### Uses of Rule in net.sourceforge.pmd.lang.java.rule.sunsecure

Classes in net.sourceforge.pmd.lang.java.rule.sunsecure that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `AbstractSunSecureRule` Utility methods for the package
`class` | `ArrayIsStoredDirectlyRule`
`class` | `MethodReturnsInternalArrayRule` Implementation note: this rule currently ignores return types of y.x.z, currently it handles only local type fields.

### Uses of Rule in net.sourceforge.pmd.lang.java.rule.unnecessary

Classes in net.sourceforge.pmd.lang.java.rule.unnecessary that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `UnnecessaryConversionTemporaryRule`
`class` | `UnnecessaryReturnRule`
`class` | `UselessOperationOnImmutableRule` An operation on an Immutable object (String, BigDecimal or BigInteger) won't change the object itself.
`class` | `UselessOverridingMethodRule`

### Uses of Rule in net.sourceforge.pmd.lang.java.rule.unusedcode

Classes in net.sourceforge.pmd.lang.java.rule.unusedcode that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `UnusedFormalParameterRule`
`class` | `UnusedLocalVariableRule`
`class` | `UnusedModifierRule`
`class` | `UnusedPrivateFieldRule`
`class` | `UnusedPrivateMethodRule`

### Uses of Rule in net.sourceforge.pmd.lang.java.typeresolution.rules

Classes in net.sourceforge.pmd.lang.java.typeresolution.rules that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `CloneMethodMustImplementCloneable` The method clone() should only be implemented if the class implements the Cloneable interface with the exception of a final method that only throws CloneNotSupportedException.
`class` | `LooseCoupling` This is a separate rule, uses the type resolution facade
`class` | `SignatureDeclareThrowsException` A method/constructor shouldn't explicitly throw java.lang.Exception, since it is unclear which exceptions that can be thrown from the methods.

### Uses of Rule in net.sourceforge.pmd.lang.java.typeresolution.rules.imports

Classes in net.sourceforge.pmd.lang.java.typeresolution.rules.imports that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `UnusedImports`

### Uses of Rule in net.sourceforge.pmd.lang.jsp.rule

Classes in net.sourceforge.pmd.lang.jsp.rule that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `AbstractJspRule`

Methods in net.sourceforge.pmd.lang.jsp.rule with parameters of type Rule
Modifier and Type | Method and Description
--- | ---
`protected RuleViolation` | JspRuleViolationFactory.`createRuleViolation(Rule rule, RuleContext ruleContext, Node node, String message)`
`protected RuleViolation` | JspRuleViolationFactory.`createRuleViolation(Rule rule, RuleContext ruleContext, Node node, String message, int beginLine, int endLine)`
`protected void` | JspRuleChainVisitor.`visit(Rule rule, Node node, RuleContext ctx)`

### Uses of Rule in net.sourceforge.pmd.lang.jsp.rule.basic

Classes in net.sourceforge.pmd.lang.jsp.rule.basic that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `DuplicateJspImportsRule`
`class` | `NoInlineStyleInformationRule` This rule checks that no "style" elements (like , , ...) are used, and that no "style" attributes (like "font", "size", "align") are used.

### Uses of Rule in net.sourceforge.pmd.lang.rule

Classes in net.sourceforge.pmd.lang.rule that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `AbstractDelegateRule` Base class for Rule implementations which delegate to another Rule instance.
`class` | `AbstractRule` Basic abstract implementation of all parser-independent methods of the Rule interface.
`class` | `MockRule` This is a Rule implementation which can be used in scenarios where an actual functional Rule is not needed.
`class` | `RuleReference` This class represents a Rule which is a reference to Rule defined in another RuleSet.
`class` | `XPathRule` Rule that tries to match an XPath expression against a DOM view of an AST.

Fields in net.sourceforge.pmd.lang.rule declared as Rule
Modifier and Type | Field and Description
--- | ---
`protected Rule` | ParametricRuleViolation.`rule`

Fields in net.sourceforge.pmd.lang.rule with type parameters of type Rule
Modifier and Type | Field and Description
--- | ---
`protected Map<RuleSet,List<Rule>>` | AbstractRuleChainVisitor.`ruleSetRules` These are all the rules participating in the RuleChain, grouped by RuleSet.

Methods in net.sourceforge.pmd.lang.rule that return Rule
Modifier and Type | Method and Description
--- | ---
`Rule` | AbstractDelegateRule.`getRule()`
`Rule` | ParametricRuleViolation.`getRule()`

Methods in net.sourceforge.pmd.lang.rule with parameters of type Rule
Modifier and Type | Method and Description
--- | ---
`void` | RuleChainVisitor.`add(RuleSet ruleSet, Rule rule)` Add the given rule to the visitor.
`void` | AbstractRuleChainVisitor.`add(RuleSet ruleSet, Rule rule)`
`void` | RuleViolationFactory.`addViolation(RuleContext ruleContext, Rule rule, Node node, String message, int beginLine, int endLine, Object[] args)`
`void` | AbstractRuleViolationFactory.`addViolation(RuleContext ruleContext, Rule rule, Node node, String message, int beginLine, int endLine, Object[] args)`
`void` | RuleViolationFactory.`addViolation(RuleContext ruleContext, Rule rule, Node node, String message, Object[] args)` Adds a violation to the report.
`void` | AbstractRuleViolationFactory.`addViolation(RuleContext ruleContext, Rule rule, Node node, String message, Object[] args)`
`protected abstract RuleViolation` | AbstractRuleViolationFactory.`createRuleViolation(Rule rule, RuleContext ruleContext, Node node, String message)`
`protected abstract RuleViolation` | AbstractRuleViolationFactory.`createRuleViolation(Rule rule, RuleContext ruleContext, Node node, String message, int beginLine, int endLine)`
`void` | AbstractDelegateRule.`setRule(Rule rule)`
`protected abstract void` | AbstractRuleChainVisitor.`visit(Rule rule, Node node, RuleContext ctx)` Visit the given rule to the given node.

Constructors in net.sourceforge.pmd.lang.rule with parameters of type Rule
Constructor and Description
`ParametricRuleViolation(Rule theRule, RuleContext ctx, T node, String message)`
`RuleReference(Rule theRule, RuleSetReference theRuleSetReference)`

### Uses of Rule in net.sourceforge.pmd.lang.rule.properties

Methods in net.sourceforge.pmd.lang.rule.properties with parameters of type Rule
Modifier and Type | Method and Description
--- | ---
`String` | PropertyDescriptorWrapper.`propertyErrorFor(Rule rule)`
`String` | AbstractProperty.`propertyErrorFor(Rule rule)` A convenience method that returns an error string if the rule holds onto a property value that has a problem.

### Uses of Rule in net.sourceforge.pmd.lang.rule.stat

Subinterfaces of Rule in net.sourceforge.pmd.lang.rule.stat
Modifier and Type | Interface and Description
--- | ---
`interface` | `StatisticalRule` This interface tags a Rule as being a Statistical rule, producing various metrics from data points.

### Uses of Rule in net.sourceforge.pmd.lang.xml

Constructors in net.sourceforge.pmd.lang.xml with parameters of type Rule
Constructor and Description
`XmlParserOptions(Rule rule)`

### Uses of Rule in net.sourceforge.pmd.lang.xml.rule

Classes in net.sourceforge.pmd.lang.xml.rule that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `AbstractDomXmlRule` This is a base class for XML Java bases rules that which to visit the nodes using the DOM.
`class` | `AbstractXmlRule` This is a base class for XML Java bases rules.
`class` | `XmlXPathRule`

Methods in net.sourceforge.pmd.lang.xml.rule with parameters of type Rule
Modifier and Type | Method and Description
--- | ---
`protected RuleViolation` | XmlRuleViolationFactory.`createRuleViolation(Rule rule, RuleContext ruleContext, Node node, String message)`
`protected RuleViolation` | XmlRuleViolationFactory.`createRuleViolation(Rule rule, RuleContext ruleContext, Node node, String message, int beginLine, int endLine)`
`protected void` | XmlRuleChainVisitor.`visit(Rule rule, Node node, RuleContext ctx)`

### Uses of Rule in net.sourceforge.pmd.util.designer

Classes in net.sourceforge.pmd.util.designer that implement Rule
Modifier and Type | Class and Description
--- | ---
`class` | `DFAGraphRule`