Exemple #1
0
    except UF.CHError as e:
        print(str(e.wrap()))
        exit(1)

    if args.history:
        summarieslist = UF.read_project_summary_results_history(cpath)
    else:
        summarieslist = [ UF.read_project_summary_results(cpath) ]
   
    for summaries in summarieslist:
        # summaries = UF.read_project_summary_results(cpath)
        try:
            if summaries == None:
                sempath = os.path.join(cpath,'semantics')
                capp = CApplication(sempath)
                timestamp = os.stat(capp.path).st_ctime
                result = RP.project_proofobligation_stats_to_dict(capp)
                result['timestamp'] = timestamp
                result['project'] = cpath
                UF.save_project_summary_results(cpath, result)
                UF.save_project_summary_results_as_xml(cpath, result)
                summaries = UF.read_project_summary_results(cpath)
            print(RP.project_proofobligation_stats_dict_to_string(summaries))
        except IndexedTableError as e:
            print(
                '\n' + ('*' * 80) + '\nThe analysis results format has changed'
                + '\nYou may have to re-run the analysis first: '
                + '\n' + e.msg
                + '\n' + ('*' * 80))
    
            capp.reinitialize_tables()
            capp.update_spos()

        for i in range(5):
            capp.update_spos()
            am.generate_and_check_app("llrvisp", processes=args.maxprocesses)
            capp.reinitialize_tables()

    def filefilter(filename):
        return not (filename in ["io", "main_linux", "std_thread"])

    with timing("summarize"):

        contractviolations = capp.get_contract_condition_violations()
        if len(contractviolations) > 0:
            print(" --> " + str(len(contractviolations)) +
                  " contract violations in " + args.path)

        timestamp = os.stat(capp.path).st_ctime
        try:
            result = RP.project_proofobligation_stats_to_dict(
                capp, filefilter=filefilter)
            result["timestamp"] = timestamp
            result["project"] = cpath
            UF.save_project_summary_results(cpath, result)
        except IndexedTableError as e:
            print("\n" + ("*" * 80) +
                  "\nThe analysis results format has changed" +
                  "\nYou may have to re-run the analysis first: " + "\n" +
                  e.msg + "\n" + ("*" * 80))