Class AnnotationStatistics
java.lang.Object
javax.annotation.processing.AbstractProcessor
org.checkerframework.javacutil.AbstractTypeProcessor
org.checkerframework.framework.source.SourceChecker
org.checkerframework.common.util.count.AnnotationStatistics
- All Implemented Interfaces:
Processor
,OptionConfiguration
@SupportedOptions({"nolocations","annotations","annotationserror","annotationsummaryonly"})
@SupportedSourceVersion(RELEASE_8)
public class AnnotationStatistics
extends SourceChecker
An annotation processor for counting the annotations in a program and for listing the potential
locations of annotations. To invoke it, use
javac -proc:only -processor org.checkerframework.common.util.count.AnnotationStatistics MyFile.java ...
By default, this utility displays annotation locations only, but not the annotations
themselves. Further, the ouput includes all annotations (including @Override
, etc.),
which is not very useful.
The following options may be used to adjust the output:
-Aannotations
: prints the annotation name, the file that contains it, and whether it is in a signature or in a body-Anolocations
: suppresses location output; only makes sense in conjunction with-Aannotations
-Aannotationsummaryonly
: with both of the above, only outputs a summary-Aannotationserror
: histogram is issued as a warning, not just printed
These use cases are not very useful, because they include all annotations including
@Override
, etc.
- Output the locations of annotations, but not the annotations themselves: normal invocation, as above
- Histogram of the locations of annotations, by location type:
... | sort | uniq -c
- Total annotation count:
... | wc
. - Count for only certain location types: use
grep
- See Also:
-
Field Summary
Fields inherited from class org.checkerframework.framework.source.SourceChecker
currentRoot, DETAILS_SEPARATOR, elements, elementsWithSuppressedWarnings, errsOnLastExit, javacErrored, messager, messagesProperties, MSGS_FILE, OPTION_SEPARATOR, parentChecker, SUPPRESS_ALL_MESSAGE_KEY, SUPPRESS_ALL_PREFIX, trees, types, UNNEEDED_SUPPRESSION_KEY, upstreamCheckerNames, useAllcheckersPrefix, visitor
Fields inherited from class javax.annotation.processing.AbstractProcessor
processingEnv
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected SourceVisitor<?,
?> Provides theSourceVisitor
that the checker should use to scan input source trees.Returns the AnnotationProvider (the type factory) associated with this.protected void
incrementCount
(Name annoName) Increment the number of times annotation with nameannoName
has appeared.void
A method to be called once all the classes are processed.Methods inherited from class org.checkerframework.framework.source.SourceChecker
addOptions, createSupportedLintOptions, expandCFOptions, fullMessageOf, getBooleanOption, getBooleanOption, getElementUtils, getLintOption, getLintOption, getMessagesProperties, getOption, getOption, getOptionConfiguration, getOptions, getParentChecker, getPathToCompilationUnit, getProcessingEnvironment, getProperties, getStandardSuppressWarningsPrefixes, getStringsOption, getStringsOption, getSupportedAnnotationTypes, getSupportedLintOptions, getSupportedOptions, getSupportedSourceVersion, getSuppressWarningsPrefixes, getTreeUtils, getTypeUtils, getUpstreamCheckerNames, getVisitor, hasOption, init, initChecker, message, message, messageKeyMatches, printOrStoreMessage, printOrStoreMessage, printStats, processErrorMessageArg, report, reportError, reportWarning, setLintOption, setParentChecker, setProcessingEnvironment, setRoot, setSupportedLintOptions, shouldAddShutdownHook, shouldSkipDefs, shouldSkipDefs, shouldSkipDefs, shouldSkipFiles, shouldSkipUses, shouldSkipUses, shouldSuppressWarnings, shouldSuppressWarnings, shouldSuppressWarnings, shutdownHook, typeProcess, typeProcessingStart, useConservativeDefault, warnUnneededSuppressions, warnUnneededSuppressions
Methods inherited from class org.checkerframework.javacutil.AbstractTypeProcessor
getCompilerLog, process
Methods inherited from class javax.annotation.processing.AbstractProcessor
getCompletions, isInitialized
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.checkerframework.framework.util.OptionConfiguration
getStringsOption, getStringsOption
-
Constructor Details
-
AnnotationStatistics
public AnnotationStatistics()Creates an AnnotationStatistics.
-
-
Method Details
-
typeProcessingOver
public void typeProcessingOver()Description copied from class:AbstractTypeProcessor
A method to be called once all the classes are processed.Subclasses may override this method to do any aggregate analysis (e.g. generate report, persistence) or resource deallocation.
Method
AbstractTypeProcessor.getCompilerLog()
can be used to access the number of compiler errors.- Overrides:
typeProcessingOver
in classAbstractTypeProcessor
-
incrementCount
Increment the number of times annotation with nameannoName
has appeared. -
createSourceVisitor
Description copied from class:SourceChecker
Provides theSourceVisitor
that the checker should use to scan input source trees.- Specified by:
createSourceVisitor
in classSourceChecker
- Returns:
- a
SourceVisitor
to use to scan source trees
-
getAnnotationProvider
Description copied from class:SourceChecker
Returns the AnnotationProvider (the type factory) associated with this.- Overrides:
getAnnotationProvider
in classSourceChecker
- Returns:
- the AnnotationProvider (the type factory) associated with this
-