Add clang-tidy check to display warnings on GitHub

This commit is contained in:
Riku Isokoski 2022-08-16 16:35:59 +03:00 committed by JF
parent 957f7d2ec3
commit 73918ce8af
2 changed files with 60 additions and 3 deletions

View file

@ -17,9 +17,8 @@ jobs:
with:
fetch-depth: 1000
- name: Configure git
run: |
git fetch origin "$GITHUB_BASE_REF":"$GITHUB_BASE_REF" --depth=1000
- name: Fetch base branch
run: git fetch origin "$GITHUB_BASE_REF":"$GITHUB_BASE_REF"
- name: Install clang-format
run: |
@ -35,3 +34,36 @@ jobs:
with:
name: Patches
path: ./*.patch
test-clang-tidy:
runs-on: ubuntu-latest
container:
image: infinitime/infinitime-build
steps:
# This workaround fixes the error "unsafe repository (REPO is owned by someone else)".
# See https://github.com/actions/checkout/issues/760 and https://github.com/actions/checkout/issues/766
# The fix in "actions/checkout@v2" was not sufficient as the build process also uses git (to get the current
# commit hash, for example).
- name: Workaround permission issues
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Checkout source files
uses: actions/checkout@v3
with:
submodules: recursive
fetch-depth: 1000
- name: Fetch base branch
run: git fetch origin "$GITHUB_BASE_REF":"$GITHUB_BASE_REF"
- name: Install clang-tidy
run: |
apt-get update
apt-get -y install clang-tidy-12
- name: Prepare environment
shell: bash
env:
SOURCES_DIR: .
run: |
. docker/build.sh
GetGcc
GetNrfSdk
GetMcuBoot
CmakeGenerate
- run: tests/test-tidy.sh

25
tests/test-tidy.sh Executable file
View file

@ -0,0 +1,25 @@
#!/bin/sh
set -e
if [ -z "$GITHUB_BASE_REF" ]
then
echo "This script is only meant to be run in a GitHub Workflow"
exit 1
fi
CHANGED_FILES=$(git diff --name-only "$GITHUB_BASE_REF"...HEAD)
for file in $CHANGED_FILES
do
[ -e "$file" ] || continue
case "$file" in
src/libs/*|src/FreeRTOS/*) continue ;;
*.cpp|*.h)
echo "::group::$file"
clang-tidy-12 -p build "$file" || true
echo "::endgroup::"
esac
done
exit 0