1#!/usr/bin/env python3 2 3import sys 4from xen_analysis import settings, generic_analysis, cppcheck_analysis 5from xen_analysis.generic_analysis import * 6from xen_analysis.cppcheck_analysis import * 7 8PhaseExceptions = (GetMakeVarsPhaseError, ParseTagPhaseError, 9 CppcheckDepsPhaseError, BuildPhaseError, 10 CppcheckReportPhaseError) 11 12 13def main(argv): 14 ret_code = 0 15 settings.parse_commandline(argv) 16 try: 17 if settings.step_get_make_vars: 18 cppcheck_analysis.get_make_vars() 19 if settings.step_parse_tags: 20 generic_analysis.parse_xen_tags() 21 if settings.step_cppcheck_deps: 22 cppcheck_analysis.generate_cppcheck_deps() 23 if settings.step_build_xen: 24 generic_analysis.build_xen() 25 if settings.step_cppcheck_report: 26 cppcheck_analysis.generate_cppcheck_report() 27 except PhaseExceptions as e: 28 print("ERROR: {}".format(e)) 29 ret_code = getattr(e, "errorcode", 1) 30 finally: 31 if settings.step_clean_analysis: 32 cppcheck_analysis.clean_analysis_artifacts() 33 e = generic_analysis.clean_analysis_artifacts() 34 if e: 35 print("ERROR: {}".format(e)) 36 ret_code = 1 37 if settings.step_distclean_analysis: 38 cppcheck_analysis.clean_reports() 39 40 sys.exit(ret_code) 41 42 43if __name__ == "__main__": 44 main(sys.argv[1:]) 45