Package com.puppycrawl.tools.checkstyle
Class TreeWalker
- java.lang.Object
-
- com.puppycrawl.tools.checkstyle.AbstractAutomaticBean
-
- com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
-
- com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck
-
- com.puppycrawl.tools.checkstyle.TreeWalker
-
- All Implemented Interfaces:
Configurable
,Contextualizable
,ExternalResourceHolder
,FileSetCheck
public final class TreeWalker extends AbstractFileSetCheck implements ExternalResourceHolder
Responsible for walking an abstract syntax tree and notifying interested checks at each node.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
TreeWalker.AstState
State of AST.-
Nested classes/interfaces inherited from class com.puppycrawl.tools.checkstyle.AbstractAutomaticBean
AbstractAutomaticBean.OutputStreamOptions
-
-
Field Summary
Fields Modifier and Type Field Description private Context
childContext
Context of child components.private Set<AbstractCheck>
commentChecks
Registered comment checks.private Set<TreeWalkerFilter>
filters
The ast filters.private SeverityLevel
javaParseExceptionSeverity
Specify severity Level to log Java parsing exceptions when they are skipped.private ModuleFactory
moduleFactory
A factory for creating submodules (i.e. the Checks)private Set<AbstractCheck>
ordinaryChecks
Registered ordinary checks, that don't use comment nodes.static String
PARSE_EXCEPTION_MSG
Message to use when an exception occurs and should be printed as a violation.private boolean
skipFileOnJavaParseException
Control whether to skip files with Java parsing exceptions.private Map<Integer,Set<AbstractCheck>>
tokenToCommentChecks
Maps from token name to comment checks.private Map<Integer,Set<AbstractCheck>>
tokenToOrdinaryChecks
Maps from token name to ordinary checks.private SortedSet<Violation>
violations
The sorted set of violations.
-
Constructor Summary
Constructors Constructor Description TreeWalker()
Creates a newTreeWalker
instance.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static SortedSet<AbstractCheck>
createNewCheckSortedSet()
Creates a newSortedSet
with a deterministic order based on the Check's name before the default ordering.void
destroy()
Cleans up the object.void
finishLocalSetup()
Provides a hook to finish the part of this component's setup that was not handled by the bean introspection.Set<String>
getExternalResourceLocations()
Returns a set of external configuration resource locations which are used by the module.private SortedSet<Violation>
getFilteredViolations(String fileName, FileContents fileContents, DetailAST rootAST)
Returns filtered set ofViolation
.private Collection<AbstractCheck>
getListOfChecks(DetailAST ast, TreeWalker.AstState astState)
Method returns list of checks.private void
notifyBegin(DetailAST rootAST, FileContents contents, TreeWalker.AstState astState)
Notify checks that we are about to begin walking a tree.private void
notifyEnd(DetailAST rootAST, TreeWalker.AstState astState)
Notify checks that we have finished walking a tree.private void
notifyLeave(DetailAST ast, TreeWalker.AstState astState)
Notify checks that leaving a node.private void
notifyVisit(DetailAST ast, TreeWalker.AstState astState)
Notify checks that visiting a node.protected void
processFiltered(File file, FileText fileText)
Called to process a file that matches the specified file extensions.private void
processIter(DetailAST root, TreeWalker.AstState astState)
Processes a node calling interested checks at each node.private void
registerCheck(int tokenId, AbstractCheck check)
Register a check for a specified token id.private void
registerCheck(AbstractCheck check)
Register a check for a given configuration.void
setJavaParseExceptionSeverity(SeverityLevel javaParseExceptionSeverity)
Setter to specify the severity level to log Java parsing exceptions when they are skipped.void
setModuleFactory(ModuleFactory moduleFactory)
Sets the module factory for creating child modules (Checks).void
setSkipFileOnJavaParseException(boolean skipFileOnJavaParseException)
Setter to control whether to skip files with Java parsing exceptions.void
setupChild(Configuration childConf)
Called by configure() for every child of this component's Configuration.private void
walk(DetailAST ast, FileContents contents, TreeWalker.AstState astState)
Initiates the walk of an AST.-
Methods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck
addViolations, beginProcessing, finishProcessing, fireErrors, getFileContents, getFileExtensions, getMessageDispatcher, getTabWidth, getViolations, init, log, log, process, setFileContents, setFileExtensions, setMessageDispatcher, setTabWidth
-
Methods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverity
-
Methods inherited from class com.puppycrawl.tools.checkstyle.AbstractAutomaticBean
configure, contextualize, getConfiguration
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.puppycrawl.tools.checkstyle.api.Configurable
configure
-
Methods inherited from interface com.puppycrawl.tools.checkstyle.api.Contextualizable
contextualize
-
-
-
-
Field Detail
-
PARSE_EXCEPTION_MSG
public static final String PARSE_EXCEPTION_MSG
Message to use when an exception occurs and should be printed as a violation.- See Also:
- Constant Field Values
-
tokenToOrdinaryChecks
private final Map<Integer,Set<AbstractCheck>> tokenToOrdinaryChecks
Maps from token name to ordinary checks.
-
tokenToCommentChecks
private final Map<Integer,Set<AbstractCheck>> tokenToCommentChecks
Maps from token name to comment checks.
-
ordinaryChecks
private final Set<AbstractCheck> ordinaryChecks
Registered ordinary checks, that don't use comment nodes.
-
commentChecks
private final Set<AbstractCheck> commentChecks
Registered comment checks.
-
filters
private final Set<TreeWalkerFilter> filters
The ast filters.
-
violations
private final SortedSet<Violation> violations
The sorted set of violations.
-
childContext
private Context childContext
Context of child components.
-
moduleFactory
private ModuleFactory moduleFactory
A factory for creating submodules (i.e. the Checks)
-
skipFileOnJavaParseException
private boolean skipFileOnJavaParseException
Control whether to skip files with Java parsing exceptions.
-
javaParseExceptionSeverity
private SeverityLevel javaParseExceptionSeverity
Specify severity Level to log Java parsing exceptions when they are skipped.
-
-
Constructor Detail
-
TreeWalker
public TreeWalker()
Creates a newTreeWalker
instance.
-
-
Method Detail
-
setModuleFactory
public void setModuleFactory(ModuleFactory moduleFactory)
Sets the module factory for creating child modules (Checks).- Parameters:
moduleFactory
- the factory
-
setSkipFileOnJavaParseException
public void setSkipFileOnJavaParseException(boolean skipFileOnJavaParseException)
Setter to control whether to skip files with Java parsing exceptions.- Parameters:
skipFileOnJavaParseException
- whether to skip files with Java parsing errors.- Since:
- 10.18.0
-
setJavaParseExceptionSeverity
public void setJavaParseExceptionSeverity(SeverityLevel javaParseExceptionSeverity)
Setter to specify the severity level to log Java parsing exceptions when they are skipped.- Parameters:
javaParseExceptionSeverity
- severity level to log parsing exceptions when they are skipped.- Since:
- 10.18.0
-
finishLocalSetup
public void finishLocalSetup()
Description copied from class:AbstractAutomaticBean
Provides a hook to finish the part of this component's setup that was not handled by the bean introspection.The default implementation does nothing.
- Overrides:
finishLocalSetup
in classAbstractViolationReporter
-
setupChild
public void setupChild(Configuration childConf) throws CheckstyleException
Called by configure() for every child of this component's Configuration.The default implementation throws
Creates child module.CheckstyleException
ifchildConf
isnull
because it doesn't support children. It must be overridden to validate and support children that are wanted.- Overrides:
setupChild
in classAbstractAutomaticBean
- Parameters:
childConf
- a child of this component's Configuration- Throws:
CheckstyleException
- if there is a configuration error.- See Also:
Configuration.getChildren()
-
processFiltered
protected void processFiltered(File file, FileText fileText) throws CheckstyleException
Called to process a file that matches the specified file extensions. Processes the file.- Specified by:
processFiltered
in classAbstractFileSetCheck
- Parameters:
file
- the file to be processedfileText
- the contents of the file.- Throws:
CheckstyleException
- if error condition within Checkstyle occurs.
-
getFilteredViolations
private SortedSet<Violation> getFilteredViolations(String fileName, FileContents fileContents, DetailAST rootAST)
Returns filtered set ofViolation
.- Parameters:
fileName
- path to the filefileContents
- the contents of the filerootAST
- root AST elementDetailAST
of the file- Returns:
- filtered set of violations
-
registerCheck
private void registerCheck(AbstractCheck check) throws CheckstyleException
Register a check for a given configuration.- Parameters:
check
- the check to register- Throws:
CheckstyleException
- if an error occurs
-
registerCheck
private void registerCheck(int tokenId, AbstractCheck check) throws CheckstyleException
Register a check for a specified token id.- Parameters:
tokenId
- the id of the tokencheck
- the check to register- Throws:
CheckstyleException
- if Check is misconfigured
-
walk
private void walk(DetailAST ast, FileContents contents, TreeWalker.AstState astState)
Initiates the walk of an AST.- Parameters:
ast
- the root ASTcontents
- the contents of the file the AST was generated from.astState
- state of AST.
-
notifyBegin
private void notifyBegin(DetailAST rootAST, FileContents contents, TreeWalker.AstState astState)
Notify checks that we are about to begin walking a tree.- Parameters:
rootAST
- the root of the tree.contents
- the contents of the file the AST was generated from.astState
- state of AST.
-
notifyEnd
private void notifyEnd(DetailAST rootAST, TreeWalker.AstState astState)
Notify checks that we have finished walking a tree.- Parameters:
rootAST
- the root of the tree.astState
- state of AST.
-
notifyVisit
private void notifyVisit(DetailAST ast, TreeWalker.AstState astState)
Notify checks that visiting a node.- Parameters:
ast
- the node to notify for.astState
- state of AST.
-
notifyLeave
private void notifyLeave(DetailAST ast, TreeWalker.AstState astState)
Notify checks that leaving a node.- Parameters:
ast
- the node to notify forastState
- state of AST.
-
getListOfChecks
private Collection<AbstractCheck> getListOfChecks(DetailAST ast, TreeWalker.AstState astState)
Method returns list of checks.- Parameters:
ast
- the node to notify forastState
- state of AST.- Returns:
- list of visitors
-
destroy
public void destroy()
Description copied from interface:FileSetCheck
Cleans up the object.- Specified by:
destroy
in interfaceFileSetCheck
- Overrides:
destroy
in classAbstractFileSetCheck
-
getExternalResourceLocations
public Set<String> getExternalResourceLocations()
Description copied from interface:ExternalResourceHolder
Returns a set of external configuration resource locations which are used by the module. ATTENTION! If 'getExternalResourceLocations()' return null, there will beNullPointerException
inChecker
. Such behaviour will signal that your module (check or filter) is designed incorrectly. It makes sense to return an empty set from 'getExternalResourceLocations()' only for composite modules likeTreeWalker
.- Specified by:
getExternalResourceLocations
in interfaceExternalResourceHolder
- Returns:
- a set of external configuration resource locations which are used by the module.
-
processIter
private void processIter(DetailAST root, TreeWalker.AstState astState)
Processes a node calling interested checks at each node. Uses iterative algorithm.- Parameters:
root
- the root of tree for processastState
- state of AST.
-
createNewCheckSortedSet
private static SortedSet<AbstractCheck> createNewCheckSortedSet()
Creates a newSortedSet
with a deterministic order based on the Check's name before the default ordering.- Returns:
- The new
SortedSet
.
-
-