Package org.codenarc.rule
Class AbstractAstVisitor
- java.lang.Object
-
- org.codehaus.groovy.ast.CodeVisitorSupport
-
- org.codehaus.groovy.ast.ClassCodeVisitorSupport
-
- 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,AbstractSingleSpaceAfterKeywordAstVisitor,AbstractSpaceAroundBraceAstVisitor,AbstractTypeNameAstVisitor,AddEmptyStringAstVisitor,ArrayReturnTracker,AssertionTrap,AssignCollectionSortAstVisitor,AssignCollectionUniqueAstVisitor,AssignmentInConditionalAstVisitor,AssignmentToStaticFieldFromInstanceMethodAstVisitor,BitwiseOperatorInConditionalAstVisitor,BlockEndsWithBlankLineAstVisitor,BlockStartsWithBlankLineAstVisitor,BooleanMethodReturnsNullAstVisitor,BooleanReturnTracker,BracesForForLoopAstVisitor,BracesForIfElseAstVisitor,BracesForMethodAstVisitor,BracesForTryCatchFinallyAstVisitor,BrokenNullCheckAstVisitor,BrokenOddnessCheckAstVisitor,BusyWaitAstVisitor,ClassEndsWithBlankLineAstVisitor,ClassNameSameAsSuperclassAstVisitor,ClassReferenceAstVisitor,ClassSizeAstVisitor,ClassStartsWithBlankLineAstVisitor,CloneableWithoutCloneAstVisitor,CloneWithoutCloneableAstVisitor,ClosureStatementOnOpeningLineOfMultipleLineClosureAstVisitor,CollectAllIsDeprecatedAstVisitor,CollectionReturnTracker,CommonCatchAstVisitor,CommonThrowAstVisitor,ComparisonOfTwoConstantsAstVisitor,ComparisonWithSelfAstVisitor,CompileStaticlVisitor,ConfusingClassNamedExceptionAstVisitor,ConfusingMethodNameAstVisitor,ConfusingMultipleReturnsAstVisitor,ConfusingTernaryAstVisitor,ConsecutiveStringConcatenationAstVisitor,ConstantAssertExpressionAstVisitor,ConstantIfExpressionAstVisitor,ConstantsOnlyInterfaceAstVisitor,ConstantTernaryExpressionAstVisitor,CouldBeElvisAstVisitor,CouldBeSwitchStatementAstVisitor,CoupledTestCaseAstVisitor,DeadCodeAstVisitor,DoubleCheckedLockingAstVisitor,DoubleNegativeAstVisitor,DuplicateCaseStatementAstVisitor,DuplicateListLiteralAstVisitor,DuplicateLiteralAstVisitor,DuplicateMapKeyAstVisitor,DuplicateMapLiteralAstVisitor,DuplicateSetValueAstVisitor,ElseBlockBracesAstVisitor,EmptyCatchBlockAstVisitor,EmptyClassAstVisitor,EmptyElseBlockAstVisitor,EmptyFinallyBlockAstVisitor,EmptyForStatementAstVisitor,EmptyIfStatementAstVisitor,EmptyInstanceInitializerAstVisitor,EmptySwitchStatementAstVisitor,EmptySynchronizedStatementAstVisitor,EmptyTryBlockAstVisitor,EmptyWhileStatementAstVisitor,EnumCustomSerializationIgnoredAstVisitor,EqualsAndHashCodeAstVisitor,ExceptionExtendsErrorAstVisitor,ExceptionExtendsThrowableAstVisitor,ExceptionNotThrownAstVisitor,ExplicitTypeInstantiationAstVisitor,FieldNameAstVisitor,FieldReferenceAstVisitor,FieldTypeRequiredAstVisitor,FinalClassWithProtectedMemberAstVisitor,ForLoopShouldBeWhileLoopAstVisitor,ForStatementBracesAstVisitor,GetterMethodCouldBePropertyAstVisitor,GrailsDomainHasEqualsAstVisitor,GrailsDomainHasToStringAstVisitor,GrailsDomainReservedSqlKeywordNameAstVisitor,GrailsDomainStringPropertyMaxSizeAstVisitor,GrailsDuplicateConstraintAstVisitor,GrailsDuplicateMappingAstVisitor,GrailsMassAssignmentAstVisitor,GrailsServletContextReferenceAstVisitor,GroovyLangImmutableAstVisitor,GStringAsMapKeyAstVisitor,GStringExpressionWithinStringAstVisitor,HardCodedWindowsFileSeparatorAstVisitor,HardcodedWindowsRootDirectoryAstVisitor,IfStatementBracesAstVisitor,IfStatementCouldBeTernaryAstVisitor,IllegalClassMemberAstVisitor,IllegalPackageReferenceAstVisitor,IllegalSubclassAstVisitor,ImplementationAsTypeAstVisitor,IndentationAstVisitor,InsecureRandomAstVisitor,InstanceofAstVisitor,InterfaceNameSameAsSuperInterfaceAstVisitor,InvertedConditionAstVisitor,InvertedIfElseAstVisitor,JavaIoPackageAccessAstVisitor,JUnitAssertEqualsConstantActualValueAstVisitor,JUnitPublicPropertyAstVisitor,JUnitUnnecessaryThrowsExceptionAstVisitor,LocaleSetDefaultAstVisitor,LoggingSwallowsStacktraceAstVisitor,LongLiteralWithLowerCaseLAstVisitor,MathRandomTracker,MethodCountAstVisitor,MethodParameterTypeRequiredAstVisitor,MethodReturnTypeRequiredAstVisitor,MethodSizeAstVisitor,MissingNewInThrowStatementAstVisitor,MissingOverrideAnnotationAstVisitor,MultipleUnaryOperatorsAstVisitor,NestedBlockDepthAstVisitor,NestedForLoopAstVisitor,NestedSynchronizationAstVisitor,NoDefAstVisitor,NoJavaUtilDateAstVisitor,NonFinalSubclassOfSensitiveInterfaceAstVisitor,NullReturnTracker,PackageNameAstVisitor,ParameterCountAstVisitor,ParameterNameAstVisitor,ParameterReassignmentAstVisitor,PrintlnAstVisitor,PrivateFieldCouldBeFinalAstVisitor,PropertyNameAstVisitor,PublicMethodsBeforeNonPublicMethodsAstVisitor,RandomDoubleCoercedToZeroAstVisitor,ReturnNullFromCatchBlockAstVisitor,ReturnsNullInsteadOfEmptyArrayAstVisitor,ReturnsNullInsteadOfEmptyCollectionRuleAstVisitor,ScopedConfusingMethodNameAstVisitor,SerializableClassMustDefineSerialVersionUIDAstVisitor,SerialVersionUIDAstVisitor,SimpleDateFormatMissingLocaleAstVisitor,SpaceAfterCommaAstVisitor,SpaceAfterSemicolonAstVisitor,SpaceAroundClosureArrowAstVisitor,SpaceAroundMapEntryColonAstVisitor,SpaceAroundOperatorAstVisitor,StatelessSingletonAstVisitor,StaticFieldsBeforeInstanceFieldsAstVisitor,StaticMethodsBeforeInstanceMethodsAstVisitor,SwallowThreadDeathAstVisitor,SynchronizedOnBoxedPrimitiveAstVisitor,SynchronizedOnGetClassAstVisitor,SynchronizedOnReentrantLockAstVisitor,SynchronizedOnStringAstVisitor,SynchronizedOnThisAstVisitor,TernaryCouldBeElvisAstVisitor,ThisReferenceEscapesConstructorAstVisitor,ThreadGroupAstVisitor,ToStringReturnsNullAstVisitor,TrailingCommaAstVisitor,UnnecessaryBooleanExpressionAstVisitor,UnnecessaryCallForLastElementAstVisitor,UnnecessaryCastAstVisitor,UnnecessaryCatchBlockAstVisitor,UnnecessaryConstructorAstVisitor,UnnecessaryDefInMethodDeclarationAstVisitor,UnnecessaryDefInVariableDeclarationAstVisitor,UnnecessaryDotClassAstVisitor,UnnecessaryElseStatementAstVisitor,UnnecessaryFailAstVisitor,UnnecessaryGetterAstVisitor,UnnecessaryGStringAstVisitor,UnnecessaryIfStatementAstVisitor,UnnecessaryInstanceOfCheckAstVisitor,UnnecessaryInstantiationAstVisitor,UnnecessaryModOneAstVisitor,UnnecessaryNullCheckAstVisitor,UnnecessaryNullCheckBeforeInstanceOfAstVisitor,UnnecessaryObjectReferencesAstVisitor,UnnecessaryPackageReferenceAstVisitor,UnnecessaryPublicModifierAstVisitor,UnnecessaryReturnKeywordAstVisitor,UnnecessarySafeNavigationOperatorAstVisitor,UnnecessarySelfAssignmentAstVisitor,UnnecessarySemicolonAstVisitor,UnnecessarySetterAstVisitor,UnnecessaryTernaryExpressionAstVisitor,UnnecessaryToStringAstVisitor,UnsafeImplementationAsMapAstVisitor,UnusedPrivateMethodAstVisitor,UnusedVariableAstVisitor,UseAssertTrueInsteadOfAssertEqualsAstVisitor,UseCollectManyAstVisitor,UseCollectNestedAstVisitor,VariableNameAstVisitor,VariableTypeRequiredAstVisitor,VariableUsageFinder,WaitOutsideOfWhileLoopAstVisitor,WhileStatementBracesAstVisitor
public class AbstractAstVisitor extends org.codehaus.groovy.ast.ClassCodeVisitorSupport implements AstVisitor
Abstract superclass for Groovy AST Visitors used with Rules
-
-
Field Summary
Fields Modifier and Type Field Description private org.codehaus.groovy.ast.ClassNodecurrentClassNodeprivate Ruleruleprivate SourceCodesourceCodeprivate java.util.List<Violation>violationsprivate java.util.Set<java.lang.Object>visited
-
Constructor Summary
Constructors Constructor Description AbstractAstVisitor()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddViolation(org.codehaus.groovy.ast.ASTNode node, java.lang.String message)Add a new Violation to the list of violations found by this visitor.protected voidaddViolation(Violation violation)Add a new Violation to the list of violations found by this visitor.protected java.lang.StringgetCurrentClassName()protected org.codehaus.groovy.ast.ClassNodegetCurrentClassNode()RulegetRule()SourceCodegetSourceCode()protected org.codehaus.groovy.control.SourceUnitgetSourceUnit()java.util.List<Violation>getViolations()java.util.Set<java.lang.Object>getVisited()protected booleanisFirstVisit(java.lang.Object expression)Return true if the AST expression has not already been visited.protected java.lang.StringlastSourceLine(org.codehaus.groovy.ast.ASTNode node)Return the last raw source line corresponding to the specified AST nodeprotected java.lang.StringlastSourceLineTrimmed(org.codehaus.groovy.ast.ASTNode node)Return the trimmed last source line corresponding to the specified AST nodevoidsetRule(Rule rule)voidsetSourceCode(SourceCode sourceCode)voidsetVisited(java.util.Set<java.lang.Object> visited)protected booleanshouldVisitMethod(org.codehaus.groovy.ast.MethodNode node)protected java.lang.StringsourceLine(org.codehaus.groovy.ast.ASTNode node)Return the raw source line corresponding to the specified AST nodeprotected java.lang.StringsourceLineTrimmed(org.codehaus.groovy.ast.ASTNode node)Return the trimmed source line corresponding to the specified AST nodevoidvisitClass(org.codehaus.groovy.ast.ClassNode node)protected voidvisitClassComplete(org.codehaus.groovy.ast.ClassNode node)protected voidvisitClassEx(org.codehaus.groovy.ast.ClassNode node)voidvisitMethod(org.codehaus.groovy.ast.MethodNode node)protected voidvisitMethodComplete(org.codehaus.groovy.ast.MethodNode node)protected voidvisitMethodEx(org.codehaus.groovy.ast.MethodNode node)-
Methods inherited from class org.codehaus.groovy.ast.ClassCodeVisitorSupport
addError, visitAnnotations, visitAssertStatement, visitBlockStatement, visitBreakStatement, visitCaseStatement, visitCatchStatement, visitClassCodeContainer, visitConstructor, visitConstructorOrMethod, visitContinueStatement, visitDeclarationExpression, visitDoWhileLoop, visitExpressionStatement, visitField, visitForLoop, visitIfElse, visitImports, visitObjectInitializerStatements, visitPackage, visitProperty, visitReturnStatement, visitStatement, visitSwitch, visitSynchronizedStatement, visitThrowStatement, visitTryCatchFinally, visitWhileLoop
-
Methods inherited from class org.codehaus.groovy.ast.CodeVisitorSupport
visitArgumentlistExpression, visitArrayExpression, visitAttributeExpression, visitBinaryExpression, visitBitwiseNegationExpression, visitBooleanExpression, visitBytecodeExpression, visitCastExpression, visitClassExpression, visitClosureExpression, visitClosureListExpression, visitConstantExpression, visitConstructorCallExpression, visitEmptyStatement, visitFieldExpression, visitGStringExpression, visitListExpression, visitListOfExpressions, visitMapEntryExpression, visitMapExpression, visitMethodCallExpression, visitMethodPointerExpression, visitNotExpression, visitPostfixExpression, visitPrefixExpression, visitPropertyExpression, visitRangeExpression, visitShortTernaryExpression, visitSpreadExpression, visitSpreadMapExpression, visitStaticMethodCallExpression, visitTernaryExpression, visitTupleExpression, visitUnaryMinusExpression, visitUnaryPlusExpression, visitVariableExpression
-
-
-
-
Field Detail
-
violations
private final java.util.List<Violation> violations
-
rule
private Rule rule
-
sourceCode
private SourceCode sourceCode
-
visited
private java.util.Set<java.lang.Object> visited
-
currentClassNode
private org.codehaus.groovy.ast.ClassNode currentClassNode
-
-
Method Detail
-
isFirstVisit
protected boolean isFirstVisit(java.lang.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
-
sourceLineTrimmed
protected java.lang.String sourceLineTrimmed(org.codehaus.groovy.ast.ASTNode node)
Return the trimmed source line corresponding to the specified AST node- Parameters:
node- - the Groovy AST node
-
sourceLine
protected java.lang.String sourceLine(org.codehaus.groovy.ast.ASTNode node)
Return the raw source line corresponding to the specified AST node- Parameters:
node- - the Groovy AST node
-
lastSourceLine
protected java.lang.String lastSourceLine(org.codehaus.groovy.ast.ASTNode node)
Return the last raw source line corresponding to the specified AST node- Parameters:
node- - the Groovy AST node
-
lastSourceLineTrimmed
protected java.lang.String lastSourceLineTrimmed(org.codehaus.groovy.ast.ASTNode node)
Return the trimmed last source line corresponding to the specified AST node- Parameters:
node- - the Groovy AST node
-
addViolation
protected void addViolation(org.codehaus.groovy.ast.ASTNode node, java.lang.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 Nodemessage- - 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:
getSourceUnitin classorg.codehaus.groovy.ast.ClassCodeVisitorSupport
-
visitClass
public final void visitClass(org.codehaus.groovy.ast.ClassNode node)
- Specified by:
visitClassin interfaceorg.codehaus.groovy.ast.GroovyClassVisitor- Overrides:
visitClassin classorg.codehaus.groovy.ast.ClassCodeVisitorSupport
-
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:
visitMethodin interfaceorg.codehaus.groovy.ast.GroovyClassVisitor- Overrides:
visitMethodin classorg.codehaus.groovy.ast.ClassCodeVisitorSupport
-
shouldVisitMethod
protected boolean shouldVisitMethod(org.codehaus.groovy.ast.MethodNode node)
-
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:
setRulein interfaceAstVisitor
-
setSourceCode
public void setSourceCode(SourceCode sourceCode)
- Specified by:
setSourceCodein interfaceAstVisitor
-
getViolations
public java.util.List<Violation> getViolations()
- Specified by:
getViolationsin interfaceAstVisitor
-
getVisited
public java.util.Set<java.lang.Object> getVisited()
-
getRule
public Rule getRule()
-
getSourceCode
public SourceCode getSourceCode()
-
setVisited
public void setVisited(java.util.Set<java.lang.Object> visited)
-
getCurrentClassName
protected java.lang.String getCurrentClassName()
-
getCurrentClassNode
protected org.codehaus.groovy.ast.ClassNode getCurrentClassNode()
-
-