2
0
mirror of https://github.com/checkpoint-restore/criu synced 2025-08-22 01:51:51 +00:00
criu/scripts/github-indent-warnings.py
Pavel Tikhomirov d2a0d1fa64 lint: don't fail workflow on indent fail
There are multiple cases where good human readable code block is
converted to an unreadable mess by clang-format, so we don't want to
rely on clang-format completely. Also there is no way, as far as I can
see, to make clang-format only fix what we want it to fix without
breaking something.

So let's just display hints inline where clang-format is unhappy. When
reviewer sees such a warning it's a good sign that something is broken
in coding-style around this warning.

We add special script which parses diff generated by indent and
generates warning for each hunk.

Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
2023-10-22 13:29:25 -07:00

34 lines
1.1 KiB
Python
Executable File

#!/usr/bin/python3
import sys
import re
re_file = r'^diff --git a/(\S\S*)\s.*$'
re_line = r'^@@ -(\d\d*)\D.*@@.*$'
if __name__ == '__main__':
if len(sys.argv) != 1 and len(sys.argv) != 2:
print(f'usage: {sys.argv[0]} <path/to/file>')
print(f'usage: <command> | {sys.argv[0]}')
exit(1)
input_file = sys.stdin.fileno()
if len(sys.argv) == 2:
input_file = sys.argv[1]
with open(input_file, 'r') as fi:
file_name = None
line_number = None
for line in fi:
file_matches = re.findall(re_file, line)
if len(file_matches) == 1:
file_name = file_matches[0]
continue
if file_name is None:
continue
line_matches = re.findall(re_line, line)
if len(line_matches) == 1:
line_number = int(line_matches[0]) + 3
print(f'::warning file={file_name},line={line_number}::clang-format: Possible coding style problem (https://github.com/checkpoint-restore/criu/blob/criu-dev/CONTRIBUTING.md#automatic-tools-to-fix-coding-style)')