| 
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectjavax.annotation.processing.AbstractProcessor
com.sun.source.util.AbstractTypeProcessor
checkers.source.SourceChecker
public abstract class SourceChecker extends AbstractTypeProcessor
An abstract annotation processor designed for implementing a
 source-file checker for a JSR-308 conforming compiler plug-in. It provides an
 interface to javac's annotation processing API, routines for error
 reporting via the JSR 199 compiler API, and an implementation for using a
 SourceVisitor to perform the type-checking.
 
Subclasses must implement the following methods:
getMessages() (for type-qualifier specific error messages)
  createSourceVisitor(CompilationUnitTree) (for a custom SourceVisitor)
  createFactory(com.sun.source.tree.CompilationUnitTree) (for a custom AnnotatedTypeFactory)
  getSuppressWarningsKey() (for honoring
      SuppressWarnings annotations)
 BaseTypeChecker,
 instead of this class.  Only checkers which require annotated types but not
 subtype checking (e.g. for testing purposes) should extend this.
 Non-type checkers (e.g. for enforcing coding styles) should extend
 AbstractProcessor (or even this class) as the Checker Framework is
 not designed for such checkers.
| Modifier and Type | Field and Description | 
|---|---|
 TreePath | 
currentPath
 | 
protected  CompilationUnitTree | 
currentRoot
The source tree that's being scanned.  | 
protected  ProcessingEnvironment | 
env
Provides access to compiler helpers/internals.  | 
protected  com.sun.tools.javac.processing.JavacMessager | 
messager
Used to report error messages and warnings via the compiler.  | 
protected  Properties | 
messages
Maps error keys to localized/custom error messages.  | 
protected  Trees | 
trees
Used as a helper for the SourceVisitor. | 
| Fields inherited from class javax.annotation.processing.AbstractProcessor | 
|---|
processingEnv | 
| Constructor and Description | 
|---|
SourceChecker()
 | 
| Modifier and Type | Method and Description | 
|---|---|
 AnnotatedTypeFactory | 
createFactory(CompilationUnitTree root)
 | 
protected abstract  SourceVisitor<?,?> | 
createSourceVisitor(CompilationUnitTree root)
Provides the SourceVisitor that the checker should use to scan
 input source trees. | 
protected  String | 
fullMessageOf(String messageKey,
              String defValue)
Returns the localized long message corresponding for this key, and returns the defValue if no localized message is found.  | 
 boolean | 
getLintOption(String name)
Determines the value of the lint option with the given name.  | 
 boolean | 
getLintOption(String name,
              boolean def)
Determines the value of the lint option with the given name.  | 
 Properties | 
getMessages()
Provides a mapping of error keys to custom error messages.  | 
 ProcessingEnvironment | 
getProcessingEnvironment()
 | 
 Pattern | 
getShouldSkip()
Returns a regular expression pattern to specify java classes that are not annotated, and thus whose warnings and should be surpressed.  | 
 Set<String> | 
getSupportedAnnotationTypes()
Always returns a singleton set containing only "*".  | 
 Set<String> | 
getSupportedLintOptions()
Returns the lint options recognized by this checker.  | 
 Set<String> | 
getSupportedOptions()
 | 
 SourceVersion | 
getSupportedSourceVersion()
 | 
 Collection<String> | 
getSuppressWarningsKey()
 | 
 void | 
init(ProcessingEnvironment processingEnv)
 | 
protected  void | 
message(Diagnostic.Kind kind,
        Object source,
        String msgKey,
        Object... args)
Prints a message (error, warning, note, etc.) via JSR-269.  | 
 void | 
report(Result r,
       Object src)
Reports a result.  | 
 void | 
typeProcess(TypeElement e,
            TreePath p)
Type-check the code with Java specifications and then runs the Checker Rule Checking visitor on the processed source.  | 
| Methods inherited from class com.sun.source.util.AbstractTypeProcessor | 
|---|
process, typeProcessingOver | 
| 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 | 
| Field Detail | 
|---|
protected ProcessingEnvironment env
protected Properties messages
protected com.sun.tools.javac.processing.JavacMessager messager
protected Trees trees
SourceVisitor.
protected CompilationUnitTree currentRoot
public TreePath currentPath
| Constructor Detail | 
|---|
public SourceChecker()
| Method Detail | 
|---|
public ProcessingEnvironment getProcessingEnvironment()
ProcessingEnvironment that was supplied to this
         checkerpublic AnnotatedTypeFactory createFactory(CompilationUnitTree root)
root - the AST root for the factoryAnnotatedTypeFactory for use by typecheckersprotected abstract SourceVisitor<?,?> createSourceVisitor(CompilationUnitTree root)
SourceVisitor that the checker should use to scan
 input source trees.
root - the AST rootSourceVisitor to use to scan source treespublic Properties getMessages()
Properties out of
 file messages.properties.  It accumulates all the properties files
 in the Java class hierarchy from the checker up to SourceChecker.
 This permits subclasses to inherit default messages while being able to
 override them.
Properties that maps error keys to error message textpublic void init(ProcessingEnvironment processingEnv)
init in interface Processorinit in class AbstractTypeProcessorAbstractProcessor.init(ProcessingEnvironment)
public void typeProcess(TypeElement e,
                        TreePath p)
typeProcess in class AbstractTypeProcessorProcessor.process(Set, RoundEnvironment)
protected String fullMessageOf(String messageKey,
                               String defValue)
protected void message(Diagnostic.Kind kind,
                       Object source,
                       @CompilerMessageKey
                       String msgKey,
                       Object... args)
kind - the type of message to printsource - the object from which to obtain source position informationmsgKey - the message key to printargs - arguments for interpolation in the string corresponding to the
            given message keyIllegalArgumentException - if source is neither a Tree nor an
             ElementDiagnostic
public void report(Result r,
                   Object src)
r - the result to reportsrc - the position object associated with the resultpublic final boolean getLintOption(String name)
name - the name of the lint option to check forIllegalArgumentException - if the option name is not recognized
         via the SupportedLintOptions annotation or the getSupportedLintOptions() methodgetLintOption(String,boolean)
public final boolean getLintOption(String name,
                                   boolean def)
name - the name of the lint option to check fordef - the default option value, returned if the option was not givendef if it was not given at allIllegalArgumentException - if the option name is not recognized
         via the SupportedLintOptions annotation or the getSupportedLintOptions() methodgetLintOption(String)public Set<String> getSupportedLintOptions()
getLintOption(java.lang.String).
Set of the lint options recognized by
         this checkerpublic Set<String> getSupportedOptions()
getSupportedOptions in interface ProcessorgetSupportedOptions in class AbstractProcessorpublic final Set<String> getSupportedAnnotationTypes()
SupportedAnnotationTypes annotation, so the effect of returning "*"
 is as if the checker were annotated by
 @SupportedAnnotationTypes("*"):
 javac runs the checker on every
 class mentioned on the javac command line.  This method also checks
 that subclasses do not contain a SupportedAnnotationTypes
 annotation.  
 To specify the annotations that a checker recognizes as type qualifiers,
 use the TypeQualifiers annotation on the declaration of
 subclasses of this class or override the
 BaseTypeChecker.getSupportedTypeQualifiers() method.
getSupportedAnnotationTypes in interface ProcessorgetSupportedAnnotationTypes in class AbstractProcessorError - if a subclass is annotated with
         SupportedAnnotationTypesTypeQualifiers, 
getSupportedAnnotationTypes()public Collection<String> getSuppressWarningsKey()
SuppressWarningsKeypublic Pattern getShouldSkip()
checkers.skipClasses; otherwise it returns a pattern that can
 match no class.
public final SourceVersion getSupportedSourceVersion()
getSupportedSourceVersion in interface ProcessorgetSupportedSourceVersion in class AbstractProcessor
  | 
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||