Since Python 3.12, invalid escape sequences produce a SyntaxWarning; in the future, they will produce SyntaxError. Using raw strings clear out the warning. Below the command used for checking the fix worked. ``` $ python3 util/lint/checkpatch_json.py ``` Link: https://docs.python.org/3.12/whatsnew/3.12.html#other-language-changes Change-Id: I0177dc7f0d3013759879320afdb6ab548d356bc7 Signed-off-by: Ariel Otilibili <otilibil@eurecom.fr> Reviewed-on: https://review.coreboot.org/c/coreboot/+/85771 Reviewed-by: Maximilian Brune <maximilian.brune@9elements.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de>
66 lines
1.9 KiB
Python
Executable file
66 lines
1.9 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
|
|
import re
|
|
|
|
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) )
|
|
elif re.search(r"^\d+:\Z",line) != "None" and line.startswith("#"):
|
|
file_path="/COMMIT_MSG"
|
|
line = line.replace('#', '')
|
|
line_number = int(line.split(":")[0]) + 2
|
|
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()
|