public static ValueAnalysisRefiner create(final ConfigurableProgramAnalysis pCpa) throws InvalidConfigurationException { final ARGCPA argCpa = retrieveCPA(pCpa, ARGCPA.class); final ValueAnalysisCPA valueAnalysisCpa = retrieveCPA(pCpa, ValueAnalysisCPA.class); valueAnalysisCpa.injectRefinablePrecision(); final LogManager logger = valueAnalysisCpa.getLogger(); final Configuration config = valueAnalysisCpa.getConfiguration(); final CFA cfa = valueAnalysisCpa.getCFA(); final StrongestPostOperator<ValueAnalysisState> strongestPostOp = new ValueAnalysisStrongestPostOperator(logger, Configuration.builder().build(), cfa); final ValueAnalysisFeasibilityChecker checker = new ValueAnalysisFeasibilityChecker(strongestPostOp, logger, cfa, config); final GenericPrefixProvider<ValueAnalysisState> prefixProvider = new ValueAnalysisPrefixProvider(logger, cfa, config); return new ValueAnalysisRefiner( argCpa, checker, strongestPostOp, new PathExtractor(logger, config), prefixProvider, config, logger, valueAnalysisCpa.getShutdownNotifier(), cfa); }
private Configuration getConfigFromFile(Path path) throws IOException, InvalidConfigurationException { ConfigurationBuilder singleConfigBuilder = Configuration.builder(); singleConfigBuilder.copyFrom(globalConfig); singleConfigBuilder.clearOption("restartAlgorithm.configFiles"); singleConfigBuilder.loadFromFile(path); Configuration singleConfig = singleConfigBuilder.build(); return singleConfig; }