public class ValueAnalyzer
extends java.lang.Object
The analyzer can be configured in several ways via ValueAnalyzer.Builder.
The analyze(MethodSignature) method can be called to perform the
configured analysis starting from a given method in the program.
The same analyzer can be used to analyze several methods in sequence, in this case the
analysis BamCache will be shared between the sequential analyses making them potentially
avoid recalculating the results when a method is called again with known parameters.
This might sometimes not be the desired behavior, since the cache might take a lot of memory.
If this is a concern rebuilding the ValueAnalyzer from the original ValueAnalyzer.Builder will provide a fresh cache.
ValueAnalyzer is currently not designed to be thread safe. Among the known reasons,
the currently available BamCaches are not designed for concurrent access and a different
ExecutingInvocationUnit (used by JvmValueTransferRelation) should be used by each
thread.
| Modifier and Type | Class and Description |
|---|---|
static class |
ValueAnalyzer.Builder
Class to configure and build a
ValueAnalyzer. |
static class |
ValueAnalyzer.ValueAnalysisResult
Provides results for the analysis.
|
| Modifier and Type | Method and Description |
|---|---|
ValueAnalyzer.ValueAnalysisResult |
analyze(MethodSignature mainSignature)
Run the value analysis on the given method.
|
public ValueAnalyzer.ValueAnalysisResult analyze(MethodSignature mainSignature)
The results are not intended as just for the last execution, but as a view on the full analysis' cache.
Since the cache at the moment has no capability to remember the last execution, the result
will change as the cache changes (i.e., after calling this again on a new method, old instances
of ValueAnalyzer.ValueAnalysisResult will also be updated).
mainSignature - the signature of the method to analyze.