coreboot-kgpe-d16/util/lint/checkpatch_json.py
Patrick Georgi 39891c00da checkpatch_json: Mark robotic comments as robotic
Gerrit now knows to differentiate between "regular" comments and
"robot" comments, with some later changes to the UI in the pipeline
(e.g. to filter out robot messages)

Change-Id: I3a545d1cf6c04b331964becd2b24eb38018394eb
Signed-off-by: Patrick Georgi <pgeorgi@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/51504
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Reviewed-by: Paul Menzel <paulepanter@mailbox.org>
2021-04-15 19:08:00 +00:00

60 lines
1.6 KiB
Python
Executable file

#!/usr/bin/env python3
# SPDX-License-Identifier: GPL-2.0-only
"""
This utilty generate json output to post comment in gerrit.
INPUT: output of checkpatch.pl.
OUTPUT: json format output that can be used to post comment in gerrit
"""
import os
import sys
import json
data = {}
data['comments'] = []
list_temp = {}
def update_struct( file_path, msg_output, line_number):
if file_path not in list_temp:
list_temp[file_path] = []
list_temp[file_path].append({
"robot_id" : "checkpatch",
"robot_run_id" : sys.argv[3],
"url" : sys.argv[4],
"line" : line_number,
"message" : msg_output,}
)
def parse_file(input_file):
fp = open (input_file, "r")
for line in fp:
if line.startswith("ERROR:"):
msg_output = line.split("ERROR:")[1].strip()
elif line.startswith("WARNING:"):
msg_output = line.split("WARNING:")[1].strip()
elif ": FILE:" in line:
temp = line.split("FILE:")
file_path = temp[1].split(":")[0]
line_number = temp[1].split(":")[1]
update_struct( file_path.strip(), msg_output, str(line_number) )
else:
continue
fp.close()
def main():
if (len(sys.argv) < 5) or (sys.argv[1] == "-h"):
print("HELP:")
print(sys.argv[0] + " <input file> <output file in json> <job-id> <job-url>")
sys.exit()
print(sys.argv[1])
parse_file(sys.argv[1])
data['robot_comments'] = list_temp
print(json.dumps(data))
out_file = open( sys.argv[2] , "w")
json.dump(data, out_file, sort_keys=True, indent=4)
out_file.close()
if __name__ == "__main__":
main()