org.codenarc.rule
Class AbstractAstVisitor

java.lang.Object
  extended by org.codehaus.groovy.ast.CodeVisitorSupport
      extended by org.codehaus.groovy.ast.ClassCodeVisitorSupport
          extended by org.codenarc.rule.ClassCodeVisitorSupportHack
              extended by org.codenarc.rule.AbstractAstVisitor
All Implemented Interfaces:
org.codehaus.groovy.ast.GroovyClassVisitor, org.codehaus.groovy.ast.GroovyCodeVisitor, AstVisitor
Direct Known Subclasses:
AbstractClassWithoutAbstractMethodAstVisitor, AbstractClassWithPublicConstructorAstVisitor, AbstractConstructorCallAstVisitor, AbstractFinallyAstVisitor, AbstractLastStatementInBlockAstVisitor, AbstractMethodMetricAstVisitor, AbstractTypeNameAstVisitor, AddEmptyStringAstVisitor, ArrayReturnTracker, AssertionTrap, AssignCollectionSortAstVisitor, AssignCollectionUniqueAstVisitor, AssignmentInConditionalAstVisitor, BitwiseOperatorInConditionalAstVisitor, BooleanMethodReturnsNullAstVisitor, BooleanReturnTracker, BracesForForLoopAstVisitor, BracesForIfElseAstVisitor, BracesForMethodAstVisitor, BracesForTryCatchFinallyAstVisitor, BrokenNullCheckAstVisitor, BrokenOddnessCheckAstVisitor, BusyWaitAstVisitor, ClassReferenceAstVisitor, ClassSizeAstVisitor, CloneableWithoutCloneAstVisitor, CollectAllIsDeprecatedAstVisitor, CollectionReturnTracker, CommonCatchAstVisitor, CommonThrowAstVisitor, ComparisonOfTwoConstantsAstVisitor, ComparisonWithSelfAstVisitor, ConfusingClassNamedExceptionAstVisitor, ConfusingMethodNameAstVisitor, ConfusingMultipleReturnsAstVisitor, ConfusingTernaryAstVisitor, ConsecutiveStringConcatenationAstVisitor, ConstantAssertExpressionAstVisitor, ConstantIfExpressionAstVisitor, ConstantsOnlyInterfaceAstVisitor, ConstantTernaryExpressionAstVisitor, CouldBeElvisAstVisitor, CoupledTestCaseAstVisitor, DeadCodeAstVisitor, DoubleCheckedLockingAstVisitor, DoubleNegativeAstVisitor, DuplicateCaseStatementAstVisitor, DuplicateListLiteralAstVisitor, DuplicateLiteralAstVisitor, DuplicateMapKeyAstVisitor, DuplicateMapLiteralAstVisitor, DuplicateSetValueAstVisitor, ElseBlockBracesAstVisitor, EmptyCatchBlockAstVisitor, EmptyElseBlockAstVisitor, EmptyFinallyBlockAstVisitor, EmptyForStatementAstVisitor, EmptyIfStatementAstVisitor, EmptyInstanceInitializerAstVisitor, EmptySwitchStatementAstVisitor, EmptySynchronizedStatementAstVisitor, EmptyTryBlockAstVisitor, EmptyWhileStatementAstVisitor, EqualsAndHashCodeAstVisitor, ExceptionExtendsErrorAstVisitor, ExplicitTypeInstantiationAstVisitor, FieldNameAstVisitor, FieldReferenceAstVisitor, FinalClassWithProtectedMemberAstVisitor, ForLoopShouldBeWhileLoopAstVisitor, ForStatementBracesAstVisitor, GetterMethodCouldBePropertyAstVisitor, GrailsDomainHasEqualsAstVisitor, GrailsDomainHasToStringAstVisitor, GrailsServletContextReferenceAstVisitor, GrailsSessionReferenceAstVisitor, GroovyLangImmutableAstVisitor, GStringAsMapKeyAstVisitor, HardCodedWindowsFileSeparatorAstVisitor, HardcodedWindowsRootDirectoryAstVisitor, IfStatementBracesAstVisitor, IllegalPackageReferenceAstVisitor, ImplementationAsTypeAstVisitor, InsecureRandomAstVisitor, InvertedIfElseAstVisitor, JavaIoPackageAccessAstVisitor, LoggingSwallowsStacktraceAstVisitor, LongLiteralWithLowerCaseLAstVisitor, MathRandomTracker, MethodCountAstVisitor, MethodSizeAstVisitor, MissingNewInThrowStatementAstVisitor, NestedBlockDepthAstVisitor, NestedSynchronizationAstVisitor, NonFinalSubclassOfSensitiveInterfaceAstVisitor, NullReturnTracker, PackageNameAstVisitor, ParameterNameAstVisitor, ParameterReassignmentAstVisitor, PrintlnAstVisitor, PrivateFieldCouldBeFinalAstVisitor, PropertyNameAstVisitor, RandomDoubleCoercedToZeroAstVisitor, ReturnNullFromCatchBlockAstVisitor, ReturnsNullInsteadOfEmptyArrayAstVisitor, ReturnsNullInsteadOfEmptyCollectionRuleAstVisitor, ScopedConfusingMethodNameAstVisitor, SerializableClassMustDefineSerialVersionUIDAstVisitor, SerialVersionUIDAstVisitor, SimpleDateFormatMissingLocaleAstVisitor, StatelessSingletonAstVisitor, SwallowThreadDeathAstVisitor, SynchronizedOnBoxedPrimitiveAstVisitor, SynchronizedOnGetClassAstVisitor, SynchronizedOnReentrantLockAstVisitor, SynchronizedOnStringAstVisitor, SynchronizedOnThisAstVisitor, TernaryCouldBeElvisAstVisitor, ThreadGroupAstVisitor, UnnecessaryBooleanExpressionAstVisitor, UnnecessaryCallForLastElementAstVisitor, UnnecessaryCatchBlockAstVisitor, UnnecessaryConstructorAstVisitor, UnnecessaryDefInMethodDeclarationAstVisitor, UnnecessaryDefInVariableDeclarationAstVisitor, UnnecessaryDotClassAstVisitor, UnnecessaryElseStatementAstVisitor, UnnecessaryFailAstVisitor, UnnecessaryGStringAstVisitor, UnnecessaryIfStatementAstVisitor, UnnecessaryInstanceOfCheckAstVisitor, UnnecessaryInstantiationAstVisitor, UnnecessaryModOneAstVisitor, UnnecessaryNullCheckAstVisitor, UnnecessaryNullCheckBeforeInstanceOfAstVisitor, UnnecessaryObjectReferencesAstVisitor, UnnecessaryPackageReferenceAstVisitor, UnnecessaryPublicModifierAstVisitor, UnnecessaryReturnKeywordAstVisitor, UnnecessarySelfAssignmentAstVisitor, UnnecessarySemicolonAstVisitor, UnnecessaryTernaryExpressionAstVisitor, UnusedPrivateMethodAstVisitor, UnusedVariableAstVisitor, UseAssertTrueInsteadOfAssertEqualsAstVisitor, UseCollectManyAstVisitor, UseCollectNestedAstVisitor, VariableNameAstVisitor, VariableUsageFinder, WaitOutsideOfWhileLoopAstVisitor, WhileStatementBracesAstVisitor

public class AbstractAstVisitor
extends ClassCodeVisitorSupportHack
implements AstVisitor

Abstract superclass for Groovy AST Visitors used with Rules

Author:
Chris Mair, Hamlet D'Arcy

Constructor Summary
AbstractAstVisitor()
           
 
Method Summary
protected  void addViolation(org.codehaus.groovy.ast.ASTNode node)
          Deprecated. Always define a message. Use the other addViolation method instead of this one.
protected  void addViolation(org.codehaus.groovy.ast.ASTNode node, String message)
          Add a new Violation to the list of violations found by this visitor.
protected  void addViolation(Violation violation)
          Add a new Violation to the list of violations found by this visitor.
protected  String getCurrentClassName()
           
protected  org.codehaus.groovy.ast.ClassNode getCurrentClassNode()
           
 Rule getRule()
           
 SourceCode getSourceCode()
           
protected  org.codehaus.groovy.control.SourceUnit getSourceUnit()
           
 List<Violation> getViolations()
           
 Set<Object> getVisited()
           
protected  boolean isFirstVisit(Object expression)
          Return true if the AST expression has not already been visited.
protected  String lastSourceLine(org.codehaus.groovy.ast.ASTNode node)
          Return the last source line corresponding to the specified AST node
 void setRule(Rule rule)
           
 void setSourceCode(SourceCode sourceCode)
           
 void setVisited(Set<Object> visited)
           
protected  String sourceLine(org.codehaus.groovy.ast.ASTNode node)
          Return the source line corresponding to the specified AST node
 void visitClass(org.codehaus.groovy.ast.ClassNode node)
           
protected  void visitClassComplete(org.codehaus.groovy.ast.ClassNode node)
           
protected  void visitClassEx(org.codehaus.groovy.ast.ClassNode node)
           
 void visitMethod(org.codehaus.groovy.ast.MethodNode node)
           
protected  void visitMethodComplete(org.codehaus.groovy.ast.MethodNode node)
           
protected  void visitMethodEx(org.codehaus.groovy.ast.MethodNode node)
           
 
Methods inherited from class org.codenarc.rule.ClassCodeVisitorSupportHack
addError, visitAnnotations, visitArgumentlistExpression, visitArrayExpression, visitAssertStatement, visitAttributeExpression, visitBinaryExpression, visitBitwiseNegationExpression, visitBlockStatement, visitBooleanExpression, visitBreakStatement, visitBytecodeExpression, visitCaseStatement, visitCastExpression, visitCatchStatement, visitClassCodeContainer, visitClassExpression, visitClosureExpression, visitClosureListExpression, visitConstantExpression, visitConstructor, visitConstructorCallExpression, visitConstructorOrMethod, visitContinueStatement, visitDeclarationExpression, visitDoWhileLoop, visitEmptyStatement, visitExpressionStatement, visitField, visitFieldExpression, visitForLoop, visitGStringExpression, visitIfElse, visitImports, visitListExpression, visitListOfExpressions, visitMapEntryExpression, visitMapExpression, visitMethodCallExpression, visitMethodPointerExpression, visitNotExpression, visitObjectInitializerStatements, visitPackage, visitPostfixExpression, visitPrefixExpression, visitProperty, visitPropertyExpression, visitRangeExpression, visitReturnStatement, visitShortTernaryExpression, visitSpreadExpression, visitSpreadMapExpression, visitStatement, visitStaticMethodCallExpression, visitSwitch, visitSynchronizedStatement, visitTernaryExpression, visitThrowStatement, visitTryCatchFinally, visitTupleExpression, visitUnaryMinusExpression, visitUnaryPlusExpression, visitVariableExpression, visitWhileLoop
 
Methods inherited from class org.codehaus.groovy.ast.CodeVisitorSupport
visitRegexExpression
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.codehaus.groovy.ast.GroovyClassVisitor
visitConstructor, visitField, visitProperty
 

Constructor Detail

AbstractAstVisitor

public AbstractAstVisitor()
Method Detail

isFirstVisit

protected boolean isFirstVisit(Object expression)
Return true if the AST expression has not already been visited. If it is the first visit, register the expression so that the next visit will return false.

Parameters:
expression - - the AST expression to check
Returns:
true if the AST expression has NOT already been visited

sourceLine

protected String sourceLine(org.codehaus.groovy.ast.ASTNode node)
Return the source line corresponding to the specified AST node

Parameters:
node - - the Groovy AST node

lastSourceLine

protected String lastSourceLine(org.codehaus.groovy.ast.ASTNode node)
Return the last source line corresponding to the specified AST node

Parameters:
node - - the Groovy AST node

addViolation

@Deprecated
protected void addViolation(org.codehaus.groovy.ast.ASTNode node)
Deprecated. Always define a message. Use the other addViolation method instead of this one.

Add a new Violation to the list of violations found by this visitor. Only add the violation if the node lineNumber >= 0.

Parameters:
node - - the Groovy AST Node

addViolation

protected void addViolation(org.codehaus.groovy.ast.ASTNode node,
                            String message)
Add a new Violation to the list of violations found by this visitor. Only add the violation if the node lineNumber >= 0.

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

addViolation

protected void addViolation(Violation violation)
Add a new Violation to the list of violations found by this visitor.

Parameters:
violation - - the violation to add

getSourceUnit

protected org.codehaus.groovy.control.SourceUnit getSourceUnit()
Specified by:
getSourceUnit in class org.codehaus.groovy.ast.ClassCodeVisitorSupport

visitClass

public final void visitClass(org.codehaus.groovy.ast.ClassNode node)
Specified by:
visitClass in interface org.codehaus.groovy.ast.GroovyClassVisitor
Overrides:
visitClass in class ClassCodeVisitorSupportHack

visitClassEx

protected void visitClassEx(org.codehaus.groovy.ast.ClassNode node)

visitClassComplete

protected void visitClassComplete(org.codehaus.groovy.ast.ClassNode node)

visitMethod

public final void visitMethod(org.codehaus.groovy.ast.MethodNode node)
Specified by:
visitMethod in interface org.codehaus.groovy.ast.GroovyClassVisitor
Overrides:
visitMethod in class ClassCodeVisitorSupportHack

visitMethodComplete

protected void visitMethodComplete(org.codehaus.groovy.ast.MethodNode node)

visitMethodEx

protected void visitMethodEx(org.codehaus.groovy.ast.MethodNode node)

setRule

public void setRule(Rule rule)
Specified by:
setRule in interface AstVisitor

setSourceCode

public void setSourceCode(SourceCode sourceCode)
Specified by:
setSourceCode in interface AstVisitor

getViolations

public List<Violation> getViolations()
Specified by:
getViolations in interface AstVisitor

getVisited

public Set<Object> getVisited()

getRule

public Rule getRule()

getSourceCode

public SourceCode getSourceCode()

setVisited

public void setVisited(Set<Object> visited)

getCurrentClassName

protected String getCurrentClassName()

getCurrentClassNode

protected org.codehaus.groovy.ast.ClassNode getCurrentClassNode()


Copyright © 2012. All Rights Reserved.