blob: ef3c20831671115d7c677d5662c67f0f8ced50f9 [file] [log] [blame]
Arthur Shece0323a2025-04-01 21:12:02 -07001#!/usr/bin/env python3
2#
3# Copyright (c) 2022 Arm Limited. All rights reserved.
4#
5# SPDX-License-Identifier: BSD-3-Clause
6
7# Script to produce cumulative "diff" report from ECLAIR individual
8# per-service diff reports.
9
10import sys
11import glob
12import os
13from string import Template
14
15
16def lcut(l, prefix):
17 if l.startswith(prefix):
18 l = l[len(prefix):]
19 return l
20
21
22def process_file(fname, del_or_add):
23 with open(fname) as f:
24 for l in f:
25 l = l.rstrip()
26 if not l:
27 break
28 for l in f:
29 if l.startswith("service "):
30 l = lcut(l, "service ")
31 if del_or_add == "del":
32 l = "Resolved for " + l
33 else:
34 l = "Added for " + l
35 elif l.startswith("End of report"):
36 l = "---------------\n"
37 sys.stdout.write(l)
38
39
40path = "."
41if len(sys.argv) > 1:
42 path = sys.argv[1]
43
44files = sorted(glob.glob(path + "/*.etr"))
45#print(files)
46
47EMPTY_REPORT_HEADER = Template("""\
48No new MISRA issues detected, good work!
49${BUILD_URL}artifact/
50""").safe_substitute(os.environ)
51
52NONEMPTY_REPORT_HEADER = Template("""\
53MISRA delta report: ${BUILD_URL}artifact/
54
55= MISRA delta report for the patch (issues resolved and/or newly added) =
56""").safe_substitute(os.environ)
57
58header_done = False
59
60for f in files:
61 if "/B.EXPLAIN" in f:
62 continue
63 comp = f.rsplit(".", 2)
64# print("*", f, comp)
65 if not header_done:
66 print(NONEMPTY_REPORT_HEADER)
67 header_done = True
68 process_file(f, comp[-2])
69
70if not header_done:
71 print(EMPTY_REPORT_HEADER)