// Init CPAs
List<ConfigurableProgramAnalysis> cpas = new LinkedList<ConfigurableProgramAnalysis>();
boolean addedExplicitAnalysis = false;
boolean addedUnderApproximation = false;
AnalysisManager mgr = AnalysisManager.getInstance();
for (int i=0; i<Options.cpas.getValue().length(); i++) {
char shortHand = Options.cpas.getValue().charAt(i);
// Special handling for trace replay analysis that really creates multiple CPAs
if (shortHand == 't') {
logger.info("--- Using trace replay analysis.");
for (String fileName : TraceReplayAnalysis.traceFiles.getValue().split(",")) {
cpas.add(new TraceReplayAnalysis(fileName));
}
addedExplicitAnalysis = true;
addedUnderApproximation = true;
continue;
}
ConfigurableProgramAnalysis cpa = mgr.createAnalysis(shortHand);
if (cpa != null) {
AnalysisProperties p = mgr.getProperties(cpa);
logger.info("--- Using " + p.getName());
addedExplicitAnalysis |= p.isExplicit();
cpas.add(cpa);
} else {
logger.fatal("No analysis corresponds to letter \"" + shortHand + "\"!");