Class SourceFileScope
- java.lang.Object
-
- net.sourceforge.pmd.lang.symboltable.AbstractScope
-
- net.sourceforge.pmd.lang.java.symboltable.AbstractJavaScope
-
- net.sourceforge.pmd.lang.java.symboltable.SourceFileScope
-
- All Implemented Interfaces:
Scope
public class SourceFileScope extends AbstractJavaScope
This scope is the outer most scope of a Java file. A Source File can contain one ore more classes.
-
-
Constructor Summary
Constructors Constructor Description SourceFileScope(ClassLoader classLoader)
SourceFileScope(ClassLoader classLoader, String packageImage)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addDeclaration(NameDeclaration declaration)
void
configureImports(List<ASTImportDeclaration> imports)
Configures the type resolution for the symbol table.ClassNameDeclaration
findClassNameDeclaration(String name)
protected Set<NameDeclaration>
findVariableHere(JavaNameOccurrence occ)
Map<ClassNameDeclaration,List<NameOccurrence>>
getClassDeclarations()
Convenience method that casts the declarations toClassNameDeclaration
s.Set<String>
getExplicitImports()
String
getPackageName()
Map<String,Node>
getQualifiedTypeNames()
Returns a set of all types defined within this source file.boolean
hasAuxclasspath()
Whether an auxclasspath has been configured or not.Class<?>
resolveType(String name)
Tries to resolve a class by name.String
toString()
-
Methods inherited from class net.sourceforge.pmd.lang.java.symboltable.AbstractJavaScope
checkForDuplicatedNameDeclaration, contains, glomNames
-
Methods inherited from class net.sourceforge.pmd.lang.symboltable.AbstractScope
addNameOccurrence, getDeclarations, getDeclarations, getEnclosingScope, getParent, setParent
-
-
-
-
Constructor Detail
-
SourceFileScope
public SourceFileScope(ClassLoader classLoader)
-
SourceFileScope
public SourceFileScope(ClassLoader classLoader, String packageImage)
-
-
Method Detail
-
configureImports
public void configureImports(List<ASTImportDeclaration> imports)
Configures the type resolution for the symbol table.- Parameters:
imports
- the import declarations
-
hasAuxclasspath
public boolean hasAuxclasspath()
Whether an auxclasspath has been configured or not. This can be used to enable/disable more detailed symbol table analysis and type resolution can be used - or to fall back to more simple implementation.- Returns:
true
if the auxclasspath is configured and types can be resolved reliably.- See Also:
resolveType(String)
-
resolveType
public Class<?> resolveType(String name)
Tries to resolve a class by name.- Parameters:
name
- the name of the class- Returns:
- the class or
null
if no class could be found
-
getPackageName
public String getPackageName()
-
addDeclaration
public void addDeclaration(NameDeclaration declaration)
- Specified by:
addDeclaration
in interfaceScope
- Overrides:
addDeclaration
in classAbstractJavaScope
- Throws:
IllegalArgumentException
- if declaration is not aClassNameDeclaration
-
getClassDeclarations
public Map<ClassNameDeclaration,List<NameOccurrence>> getClassDeclarations()
Convenience method that casts the declarations toClassNameDeclaration
s.- Returns:
- all class name declarations
- See Also:
AbstractScope.getDeclarations()
-
findClassNameDeclaration
public ClassNameDeclaration findClassNameDeclaration(String name)
-
findVariableHere
protected Set<NameDeclaration> findVariableHere(JavaNameOccurrence occ)
- Specified by:
findVariableHere
in classAbstractJavaScope
-
-