public class WholeProgramInferenceScenesHelper 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 jaifFilesPath
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 |
jaifFilesPath
Directory where .jaif files will be written to and read from.
|
Constructor and Description |
---|
WholeProgramInferenceScenesHelper(boolean ignoreNullAssignments) |
Modifier and Type | Method and Description |
---|---|
protected 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 annotations.el.AScene |
getScene(String jaifPath)
Returns the Scene stored in a .jaif file path passed as input.
|
protected void |
updateAnnotationSetInScene(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 jaifFilesPath
public WholeProgramInferenceScenesHelper(boolean ignoreNullAssignments)
public void writeScenesToJaif()
updateAnnotationSetInScene(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)
protected annotations.el.AScene getScene(String jaifPath)
protected annotations.el.AClass getAClass(String className, String jaifPath)
protected void updateAnnotationSetInScene(annotations.el.ATypeElement type, AnnotatedTypeFactory atf, String jaifPath, AnnotatedTypeMirror rhsATM, AnnotatedTypeMirror lhsATM, TypeUseLocation defLoc)
type
- ATypeElement of the Scene which will be modified.atf
- the annotated type factory of a given type system, whose
type hierarchy will be used.jaifPath
- used to identify a Scene.rhsATM
- the RHS of the annotated type on the source code.lhsATM
- the LHS of the annotated type on the source code.defLoc
- the location where the annotation will be added.