mirror of
https://github.com/checkpoint-restore/criu
synced 2025-09-04 00:05:26 +00:00
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>
This commit is contained in:
committed by
Andrei Vagin
parent
08f286ed96
commit
d2a0d1fa64
18
.github/workflows/lint.yml
vendored
18
.github/workflows/lint.yml
vendored
@@ -26,15 +26,15 @@ jobs:
|
|||||||
run: make lint
|
run: make lint
|
||||||
|
|
||||||
- name: Run make indent
|
- name: Run make indent
|
||||||
run: >
|
continue-on-error: true
|
||||||
|
run: |
|
||||||
if [ -z "${{github.base_ref}}" ]; then
|
if [ -z "${{github.base_ref}}" ]; then
|
||||||
git fetch --deepen=1 &&
|
git fetch --deepen=1
|
||||||
if ! make indent OPTS=--diff; then
|
make indent
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
git fetch origin ${{github.base_ref}} &&
|
git fetch origin ${{github.base_ref}}
|
||||||
if ! make indent OPTS=--diff BASE=origin/${{github.base_ref}}; then
|
make indent BASE=origin/${{github.base_ref}}
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
- name: Raise in-line make indent warnings
|
||||||
|
run: |
|
||||||
|
git diff | ./scripts/github-indent-warnings.py
|
||||||
|
1
Makefile
1
Makefile
@@ -432,6 +432,7 @@ lint:
|
|||||||
flake8 --config=scripts/flake8.cfg crit/setup.py
|
flake8 --config=scripts/flake8.cfg crit/setup.py
|
||||||
flake8 --config=scripts/flake8.cfg scripts/uninstall_module.py
|
flake8 --config=scripts/flake8.cfg scripts/uninstall_module.py
|
||||||
flake8 --config=scripts/flake8.cfg coredump/ coredump/coredump
|
flake8 --config=scripts/flake8.cfg coredump/ coredump/coredump
|
||||||
|
flake8 --config=scripts/flake8.cfg scripts/github-indent-warnings.py
|
||||||
shellcheck --version
|
shellcheck --version
|
||||||
shellcheck scripts/*.sh
|
shellcheck scripts/*.sh
|
||||||
shellcheck scripts/ci/*.sh scripts/ci/apt-install
|
shellcheck scripts/ci/*.sh scripts/ci/apt-install
|
||||||
|
33
scripts/github-indent-warnings.py
Executable file
33
scripts/github-indent-warnings.py
Executable file
@@ -0,0 +1,33 @@
|
|||||||
|
#!/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)')
|
Reference in New Issue
Block a user