org.codenarc.rule
Class AbstractRule

java.lang.Object
  extended by org.codenarc.rule.AbstractRule
All Implemented Interfaces:
Rule
Direct Known Subclasses:
AbstractAstVisitorRule, AbstractImportRule, BracesForClassRule, ClassJavadocRule, IllegalRegexRule, ImportFromSamePackageRule, RequiredRegexRule, RequiredStringRule, UnnecessaryGroovyImportRule, UnusedImportRule

public abstract class AbstractRule
extends Object
implements Rule

Abstract superclass for Rules.

Each subclass must define an name property (String) and a priority property (integer 1..3).

Author:
Chris Mair, Hamlet D'Arcy

Constructor Summary
AbstractRule()
           
 
Method Summary
 List<Violation> applyTo(SourceCode sourceCode)
          Apply this rule to the specified source and return a list of violations (or an empty List).
abstract  void applyTo(SourceCode sourceCode, List<Violation> violations)
          Apply this rule to the specified source and return a list of violations (or an empty List)
protected  Violation createViolation(Integer lineNumber)
          Deprecated. 
protected  Violation createViolation(Integer lineNumber, String message)
          Deprecated. 
protected  Violation createViolation(Integer lineNumber, String sourceLine, String message)
          Create and return a new Violation for this rule and the specified values
protected  Violation createViolation(SourceCode sourceCode, org.codehaus.groovy.ast.ASTNode node)
          Deprecated. 
protected  Violation createViolation(SourceCode sourceCode, org.codehaus.groovy.ast.ASTNode node, String message)
          Create a new Violation for the AST node.
protected  Violation createViolationForImport(SourceCode sourceCode, org.codehaus.groovy.ast.ImportNode importNode)
          Deprecated. 
protected  Violation createViolationForImport(SourceCode sourceCode, org.codehaus.groovy.ast.ImportNode importNode, String message)
          Create and return a new Violation for this rule and the specified import
protected  Violation createViolationForImport(SourceCode sourceCode, String className, String alias, String violationMessage)
          Create and return a new Violation for this rule and the specified import className and alias
 String getApplyToFileNames()
           
 String getApplyToFilesMatching()
           
 String getDescription()
           
 String getDoNotApplyToFileNames()
           
 String getDoNotApplyToFilesMatching()
           
abstract  String getName()
           
abstract  int getPriority()
           
 String getViolationMessage()
           
 boolean isEnabled()
           
 boolean isReady()
          Allows rules to check whether preconditions are satisfied and short-circuit execution (i.e., do nothing) if those preconditions are not satisfied.
 void setApplyToFileNames(String applyToFileNames)
           
 void setApplyToFilesMatching(String applyToFilesMatching)
           
 void setDescription(String description)
           
 void setDoNotApplyToFileNames(String doNotApplyToFileNames)
           
 void setDoNotApplyToFilesMatching(String doNotApplyToFilesMatching)
           
 void setEnabled(boolean enabled)
           
abstract  void setName(String name)
          Set the unique name for this rule
abstract  void setPriority(int priority)
          Set the priority for this rule
 void setViolationMessage(String violationMessage)
           
 String toString()
           
 void validate()
          Allows rules to perform validation.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

AbstractRule

public AbstractRule()
Method Detail

getName

public abstract String getName()
Specified by:
getName in interface Rule
Returns:
the unique name for this rule

setName

public abstract void setName(String name)
Set the unique name for this rule

Parameters:
name - - the name for this rule; this should be unique

getPriority

public abstract int getPriority()
Specified by:
getPriority in interface Rule
Returns:
the priority of this rule, between 1 (highest priority) and 3 (lowest priority), inclusive.

setPriority

public abstract void setPriority(int priority)
Set the priority for this rule

Parameters:
priority - - the priority of this rule, between 1 (highest priority) and 3 (lowest priority), inclusive.

applyTo

public abstract void applyTo(SourceCode sourceCode,
                             List<Violation> violations)
Apply this rule to the specified source and return a list of violations (or an empty List)

Parameters:
sourceCode - - the source to apply this rule to
violations - - the List of violations to which new violations from this rule are to be added

applyTo

public List<Violation> applyTo(SourceCode sourceCode)
                        throws Throwable
Apply this rule to the specified source and return a list of violations (or an empty List). This implementation delegates to the abstract applyCode(SourceCode,List), provided by concrete subclasses. This template method simplifies subclass implementations and also enables common handling of enablement logic.

Specified by:
applyTo in interface Rule
Parameters:
sourceCode - - the source to apply this rule to
Returns:
the List of violations; may be empty
Throws:
Throwable - could throw anything

isReady

public boolean isReady()
Allows rules to check whether preconditions are satisfied and short-circuit execution (i.e., do nothing) if those preconditions are not satisfied. Return true by default. This method is provided as a placeholder so subclasses can optionally override.

Returns:
true if all preconditions for this rule are satisfied

validate

public void validate()
Allows rules to perform validation. Do nothing by default. This method is provided as a placeholder so subclasses can optionally override. Subclasses will typically use assert calls to verify required preconditions.


toString

public String toString()
Overrides:
toString in class Object

createViolation

protected Violation createViolation(Integer lineNumber,
                                    String sourceLine,
                                    String message)
Create and return a new Violation for this rule and the specified values

Parameters:
lineNumber - - the line number for the violation; may be null
sourceLine - - the source line for the violation; may be null
message - - the message for the violation; may be null
Returns:
a new Violation object

createViolation

@Deprecated
protected Violation createViolation(Integer lineNumber,
                                               String message)
Deprecated. 

Create and return a new Violation for this rule and the specified values

Parameters:
lineNumber - - the line number for the violation; may be null
Returns:
a new Violation object

createViolation

@Deprecated
protected Violation createViolation(Integer lineNumber)
Deprecated. 

Create and return a new Violation for this rule and the specified values

Parameters:
lineNumber - - the line number for the violation; may be null
Returns:
a new Violation object

createViolation

protected Violation createViolation(SourceCode sourceCode,
                                    org.codehaus.groovy.ast.ASTNode node,
                                    String message)
Create a new Violation for the AST node.

Parameters:
sourceCode - - the SourceCode
node - - the Groovy AST Node
message - - the message for the violation; defaults to null

createViolation

@Deprecated
protected Violation createViolation(SourceCode sourceCode,
                                               org.codehaus.groovy.ast.ASTNode node)
Deprecated. 

Create a new Violation for the AST node.

Parameters:
sourceCode - - the SourceCode
node - - the Groovy AST Node

createViolationForImport

protected Violation createViolationForImport(SourceCode sourceCode,
                                             org.codehaus.groovy.ast.ImportNode importNode,
                                             String message)
Create and return a new Violation for this rule and the specified import

Parameters:
sourceCode - - the SourceCode
importNode - - the ImportNode for the import triggering the violation
Returns:
a new Violation object

createViolationForImport

@Deprecated
protected Violation createViolationForImport(SourceCode sourceCode,
                                                        org.codehaus.groovy.ast.ImportNode importNode)
Deprecated. 

Create and return a new Violation for this rule and the specified import

Parameters:
sourceCode - - the SourceCode
importNode - - the ImportNode for the import triggering the violation
Returns:
a new Violation object

createViolationForImport

protected Violation createViolationForImport(SourceCode sourceCode,
                                             String className,
                                             String alias,
                                             String violationMessage)
Create and return a new Violation for this rule and the specified import className and alias

Parameters:
sourceCode - - the SourceCode
className - - the class name (as specified within the import statement)
alias - - the alias for the import statement
violationMessage - - the violation message; may be null
Returns:
a new Violation object

isEnabled

public boolean isEnabled()

setEnabled

public void setEnabled(boolean enabled)

getApplyToFilesMatching

public String getApplyToFilesMatching()

setApplyToFilesMatching

public void setApplyToFilesMatching(String applyToFilesMatching)

getDoNotApplyToFilesMatching

public String getDoNotApplyToFilesMatching()

setDoNotApplyToFilesMatching

public void setDoNotApplyToFilesMatching(String doNotApplyToFilesMatching)

getApplyToFileNames

public String getApplyToFileNames()

setApplyToFileNames

public void setApplyToFileNames(String applyToFileNames)

getDoNotApplyToFileNames

public String getDoNotApplyToFileNames()

setDoNotApplyToFileNames

public void setDoNotApplyToFileNames(String doNotApplyToFileNames)

getViolationMessage

public String getViolationMessage()

setViolationMessage

public void setViolationMessage(String violationMessage)

getDescription

public String getDescription()

setDescription

public void setDescription(String description)


Copyright © 2012. All Rights Reserved.