summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/format.yml38
-rwxr-xr-xtests/test-tidy.sh25
2 files changed, 60 insertions, 3 deletions
diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml
index 714c60bf..7e1552cb 100644
--- a/.github/workflows/format.yml
+++ b/.github/workflows/format.yml
@@ -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
diff --git a/tests/test-tidy.sh b/tests/test-tidy.sh
new file mode 100755
index 00000000..f1ee5fed
--- /dev/null
+++ b/tests/test-tidy.sh
@@ -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