From 58b5fa794b8df194f52f26333db85225a300c55a Mon Sep 17 00:00:00 2001 From: Mylloon Date: Sun, 12 Mar 2023 10:22:09 +0100 Subject: [PATCH] draft --- main.py | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 main.py diff --git a/main.py b/main.py new file mode 100644 index 0000000..98e4fe3 --- /dev/null +++ b/main.py @@ -0,0 +1,49 @@ +import re +import subprocess + + +def clang_format(file_path): + command = ["clang-format", "--dry-run", file_path] + try: + output = subprocess.check_output( + command, stderr=subprocess.STDOUT, text=True) + except subprocess.CalledProcessError as e: + output = e.output + + return output + + +def parse_clang_format_output(output): + error_pattern = r"(?P.+):(?P\d+):(?P\d+): warning: code should be clang-formatted \[(?P.+)\]" + error_matches = re.finditer(error_pattern, output) + + if error_matches: + errors = [] + for error_match in error_matches: + filename = error_match.group("filename") + line_number = int(error_match.group("line_number")) + column_number = int(error_match.group("column_number")) + warning_message = error_match.group("warning_message") + + errors.append({ + "filename": filename, + "line_number": line_number, + "column_number": column_number, + "warning_message": warning_message[1:] + }) + + return errors + + return None + + +if __name__ == "__main__": + clang_format_output = clang_format("tests/1.c") + parsed_output = parse_clang_format_output(clang_format_output) + + if parsed_output: + for error in parsed_output: + print( + f"Warning dans {error['filename']} à la ligne {error['line_number']}, caractère {error['column_number']} : {error['warning_message']}") + else: + print("No warnings found.")