Added code formatting check
This commit is contained in:
5
.github/workflows/build.yml
vendored
5
.github/workflows/build.yml
vendored
@@ -11,11 +11,14 @@ jobs:
|
||||
- name: Update package database
|
||||
run: sudo apt -y update
|
||||
- name: Install deps
|
||||
run: sudo apt -y install git make gcc-10 g++-10 ccache cmake libyaml-cpp-dev llvm-12 clang-12 libclang-12-dev libclang-cpp12-dev lcov zlib1g-dev
|
||||
run: sudo apt -y install git make gcc-10 g++-10 ccache cmake libyaml-cpp-dev llvm-12 clang-12 libclang-12-dev libclang-cpp12-dev clang-format-12 lcov zlib1g-dev
|
||||
- name: Select g++ version
|
||||
run: |
|
||||
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 10
|
||||
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 10
|
||||
- name: Check code formatting
|
||||
run: |
|
||||
make check-formatting
|
||||
- name: Build and unit test
|
||||
run: |
|
||||
NUMPROC=2 CMAKE_CXX_FLAGS="--coverage -fno-inline" CMAKE_EXE_LINKER_FLAGS="-lgcov --coverage" LLVM_VERSION=12 make test
|
||||
|
||||
4
Makefile
4
Makefile
@@ -95,6 +95,10 @@ clang-format:
|
||||
format:
|
||||
docker run --rm -v $(CURDIR):/root/sources bkryza/clang-format-check:1.3
|
||||
|
||||
.PHONY: check-formatting
|
||||
check-formatting:
|
||||
./util/check_formatting.sh
|
||||
|
||||
.PHONY: iwyu_fixes
|
||||
iwyu_fixes: debug
|
||||
python3 $(shell which iwyu_tool.py) -p debug > debug/iwyu.out
|
||||
|
||||
53
util/check_formatting.sh
Executable file
53
util/check_formatting.sh
Executable file
@@ -0,0 +1,53 @@
|
||||
#!/bin/bash
|
||||
|
||||
##
|
||||
## util/check_formatting.sh
|
||||
##
|
||||
## Copyright (c) 2021-2022 Bartek Kryza <bkryza@gmail.com>
|
||||
##
|
||||
## Licensed under the Apache License, Version 2.0 (the "License");
|
||||
## you may not use this file except in compliance with the License.
|
||||
## You may obtain a copy of the License at
|
||||
##
|
||||
## http://www.apache.org/licenses/LICENSE-2.0
|
||||
##
|
||||
## Unless required by applicable law or agreed to in writing, software
|
||||
## distributed under the License is distributed on an "AS IS" BASIS,
|
||||
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
## See the License for the specific language governing permissions and
|
||||
## limitations under the License.
|
||||
##
|
||||
|
||||
shopt -s globstar
|
||||
|
||||
include_file_list() {
|
||||
cat .clang-format-include | grep "^\+" | awk '{print $2}' \
|
||||
| tr [:space:] '\n' | sort | uniq
|
||||
}
|
||||
|
||||
ignore_file_list() {
|
||||
echo $(cat .clang-format-include | grep "^\-" | awk '{print $2}') \
|
||||
$(git ls-files --others --exclude-standard --ignored) \
|
||||
| tr [:space:] '\n' | sort | uniq
|
||||
}
|
||||
|
||||
valid_ignore_file_list() {
|
||||
echo $(include_file_list) $(ignore_file_list) \
|
||||
| tr [:space:] '\n' | sort | uniq -d
|
||||
}
|
||||
|
||||
effective_file_list() {
|
||||
echo $(include_file_list) $(valid_ignore_file_list) \
|
||||
| tr [:space:] '\n' | sort | uniq -u
|
||||
}
|
||||
|
||||
GIT_STATUS=$(git diff-index --quiet HEAD --)
|
||||
|
||||
EFFECTIVE_FILE_LIST=$(effective_file_list)
|
||||
|
||||
if [[ ${#EFFECTIVE_FILE_LIST[@]} -eq 0 ]]; then
|
||||
echo ".clang-format-include patterns did not match any files."
|
||||
exit 0
|
||||
else
|
||||
clang-format-12 --dry-run --Werror ${EFFECTIVE_FILE_LIST}
|
||||
fi
|
||||
Reference in New Issue
Block a user