trait AIProject[Source, D <: Domain with OptionalReport] extends AnyRef
Template class for analyzing complete Java projects that use the abstract interpreter.
This trait is intended to be used in combination with the Analysis
and the
AnalysisApplication
traits to easily create a readily executable analysis (see
the Demos project for examples).
- Source
- AIProject.scala
- Alphabetic
- By Inheritance
- AIProject
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Abstract Value Members
- abstract def ai: AI[D]
Returns the abstract interpreter that should be used for performing the abstract interpretations.
- abstract def domain(project: Project[Source], method: Method): D
Returns the (initial) domain object that will be used to analyze an entry point.
Returns the (initial) domain object that will be used to analyze an entry point.
The analysis of all entry points may happen concurrently unless analyzeInParallel is
false
. - abstract def entryPoints(project: Project[Source]): Iterable[Method]
A project's entry points.
A project's entry points.
In case of a very simple command-line application, the set of entry points may just consist of the application's
main
method.If, for example, a desktop application with a GUI is to be analyzed, the entry points are usually the application's main method and all those listeners that react on system-level events (mouse move events, keyboard events etc.)
In case of a framework, the set of entry points typically encompasses all non-private constructors, all non-private static methods and all static initializers. Additionally, listeners for system-level events are also entry points.
- returns
All methods that are potential entry points.
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def analyze(project: Project[Source], parameters: Seq[String]): ReportableAnalysisResult
Analyzes the given project by first determining the entry points of the analysis and then starting an independent analysis for each entry point using its own domain.
Analyzes the given project by first determining the entry points of the analysis and then starting an independent analysis for each entry point using its own domain.
- Note
This method is intended to be overridden by subtraits that need to get hold on the specified analysis parameters. In this case (in the subtrait) it is recommended to first analyze the parameters and afterwards to call this method using
super.analyze(...)
.
- val analyzeInParallel: Boolean
If
true
(default) all entry points will be analyzed in parallel.If
true
(default) all entry points will be analyzed in parallel.Needs to be overridden by subclasses if the entry points should be analyzed sequentially.
- Attributes
- protected
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @IntrinsicCandidate()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated