public class WholeProgramInferenceScenesStorage extends Object
The set of annotations inferred for a certain class is stored in an AScene
, which writeScenesToJaif()
can write into a .jaif file.
For example, a class field of a class whose fully-qualified name is my.package.MyClass
will have its inferred type stored in a Scene, and later written into a file named my.package.MyClass.jaif
.
This class populates the initial Scenes by reading existing .jaif files on the JAIF_FILES_PATH
directory. Having more information in those initial .jaif files means that the
precision achieved by the whole-program inference analysis will be better. writeScenesToJaif()
rewrites the initial .jaif files, and may create new ones.
Modifier and Type | Field and Description |
---|---|
static String |
JAIF_FILES_PATH
Directory where .jaif files will be written to and read from.
|
Constructor and Description |
---|
WholeProgramInferenceScenesStorage(boolean ignoreNullAssignments)
Default constructor.
|
Modifier and Type | Method and Description |
---|---|
protected scenelib.annotations.el.AClass |
getAClass(String className,
String jaifPath)
Returns the AClass in an AScene, given a className and a jaifPath.
|
protected String |
getJaifPath(String className)
Returns the String representing the .jaif path of a class given its name.
|
protected scenelib.annotations.el.AScene |
getScene(String jaifPath)
Reads a Scene from the given .jaif file, or returns an empty Scene if the file does not
exist.
|
protected void |
updateAnnotationSetInScene(scenelib.annotations.el.ATypeElement type,
AnnotatedTypeFactory atf,
String jaifPath,
AnnotatedTypeMirror rhsATM,
AnnotatedTypeMirror lhsATM,
TypeUseLocation defLoc)
Updates the set of annotations in a location of a Scene.
|
void |
writeScenesToJaif()
Write all modified scenes into .jaif files.
|
public static final String JAIF_FILES_PATH
public WholeProgramInferenceScenesStorage(boolean ignoreNullAssignments)
ignoreNullAssignments
- indicates whether assignments where the rhs is null should be
ignoredpublic void writeScenesToJaif()
updateAnnotationSetInScene(scenelib.annotations.el.ATypeElement, org.checkerframework.framework.type.AnnotatedTypeFactory, java.lang.String, org.checkerframework.framework.type.AnnotatedTypeMirror, org.checkerframework.framework.type.AnnotatedTypeMirror, org.checkerframework.framework.qual.TypeUseLocation)
.)protected String getJaifPath(String className)
className
- the basename of a classprotected scenelib.annotations.el.AScene getScene(String jaifPath)
jaifPath
- the .jaif fileprotected scenelib.annotations.el.AClass getAClass(String className, String jaifPath)
protected void updateAnnotationSetInScene(scenelib.annotations.el.ATypeElement type, AnnotatedTypeFactory atf, String jaifPath, AnnotatedTypeMirror rhsATM, AnnotatedTypeMirror lhsATM, TypeUseLocation defLoc)
type
- ATypeElement of the Scene which will be modifiedatf
- the annotated type factory of a given type system, whose type hierarchy will be
usedjaifPath
- used to identify a ScenerhsATM
- the RHS of the annotated type on the source codelhsATM
- the LHS of the annotated type on the source codedefLoc
- the location where the annotation will be added