Skip to content

Commit

Permalink
lint: don't fail workflow on indent fail
Browse files Browse the repository at this point in the history
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 codding 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 <[email protected]>
  • Loading branch information
Snorch committed Aug 29, 2023
1 parent 05770aa commit 857ba6a
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 9 deletions.
18 changes: 9 additions & 9 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,15 @@ jobs:
run: make lint

- name: Run make indent
run: >
continue-on-error: true
run: |
if [ -z "${{github.base_ref}}" ]; then
git fetch --deepen=1 &&
if ! make indent OPTS=--diff; then
exit 1
fi
git fetch --deepen=1
make indent
else
git fetch origin ${{github.base_ref}} &&
if ! make indent OPTS=--diff BASE=origin/${{github.base_ref}}; then
exit 1
fi
git fetch origin ${{github.base_ref}}
make indent BASE=origin/${{github.base_ref}}
fi
- name: Raise in-line make indent warnings
run: |
git diff | ./scripts/github-indent-warnings.py
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -442,6 +442,7 @@ lint:
flake8 --config=scripts/flake8.cfg crit/setup.py
flake8 --config=scripts/flake8.cfg scripts/uninstall_module.py
flake8 --config=scripts/flake8.cfg coredump/ coredump/coredump
flake8 --config=scripts/flake8.cfg scripts/github-indent-warnings.py
shellcheck --version
shellcheck scripts/*.sh
shellcheck scripts/ci/*.sh scripts/ci/apt-install
Expand Down
33 changes: 33 additions & 0 deletions scripts/github-indent-warnings.py
Original file line number Diff line number Diff line change
@@ -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('::warning file={file_name},line={line_number}::clang-format: Possible coding style problem {[coding-style](https://github.com/checkpoint-restore/criu/blob/criu-dev/CONTRIBUTING.md#automatic-tools-to-fix-coding-style)}')

0 comments on commit 857ba6a

Please sign in to comment.