From cede3aed724a5f77dc4f84d56f85a9cdfe02cfa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Wed, 8 Nov 2023 12:36:49 +0100 Subject: [PATCH] refactor --- addons/misra.py | 18 +++++++++++++++--- addons/test/test-misra.py | 11 +++++------ 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/addons/misra.py b/addons/misra.py index 838f891a2e1..4e3111c8a16 100755 --- a/addons/misra.py +++ b/addons/misra.py @@ -4618,6 +4618,19 @@ def fillVerifyExpected(verify_expected, tok): self.executeCheck(2209, self.misra_22_9, cfg) self.executeCheck(2210, self.misra_22_10, cfg) + def read_ctu_info_line(self, line): + if not line.startswith('{'): + return None + try: + ctu_info = json.loads(line) + except json.decoder.JSONDecodeError: + return None + if 'summary' not in ctu_info: + return None + if 'data' not in ctu_info: + return None + return ctu_info + def analyse_ctu_info(self, ctu_info_files): all_typedef_info = {} all_tagname_info = {} @@ -4639,10 +4652,9 @@ def is_different_file(loc1, loc2): try: for filename in ctu_info_files: for line in open(filename, 'rt'): - if not line.startswith('{'): + s = read_ctu_info_line(line) + if s is None: continue - - s = json.loads(line) summary_type = s.get('summary', '') summary_data = s.get('data', None) diff --git a/addons/test/test-misra.py b/addons/test/test-misra.py index db66ddc21a9..3ae6380b8ad 100644 --- a/addons/test/test-misra.py +++ b/addons/test/test-misra.py @@ -170,9 +170,8 @@ def test_arguments_regression(): sys.argv = sys_argv_old -def test_ctu_info_1(checker): - with tempfile.TemporaryDirectory() as tempdir: - f = os.path.join(tempdir, 'crash.ctu-info') - with open(f, 'w') as fout: - fout.write('{"ctu-info": {"version": 1}}') - checker.analyse_ctu_info((f,)) +def test_read_ctu_info_line(checker): + assert checker.read_ctu_info_line('{') is None + assert checker.read_ctu_info_line('{"summary":"123"}') is None + assert checker.read_ctu_info_line('{"data":123}') is None + assert checker.read_ctu_info_line('{"summary":"123","data":123}') is not None