1
- name : Static code analysis (clang-tidy)
1
+ name : Static code analysis (clang-tidy)
2
2
3
3
on :
4
4
push :
@@ -12,26 +12,39 @@ jobs:
12
12
steps :
13
13
- uses : actions/checkout@v4
14
14
15
- - name : Install dependencies
15
+ # Cache Vulkan SDK
16
+ - name : Cache Vulkan SDK
17
+ id : cache-vulkan
18
+ uses : actions/cache@v4
19
+ with :
20
+ path : vulkan_sdk
21
+ key : vulkan-sdk-1.4.309.0
22
+
23
+ # Install system dependencies
24
+ - name : Install system dependencies
16
25
run : |
17
26
sudo apt update
18
- sudo apt install -y clang-15 clang-tidy-15 cmake ninja-build libc++-15-dev libc++abi-15-dev
19
-
20
- - name : Set clang-tidy version
21
- run : echo "CLANG_TIDY=clang-tidy-15" >> $GITHUB_ENV
27
+ sudo apt install -y clang-15 clang-tidy-15 cmake parallel libc++-15-dev libc++abi-15-dev
22
28
23
- - name : Prepare Vulkan SDK
29
+ # Download Vulkan SDK only if not cached
30
+ - name : Download Vulkan SDK
31
+ if : steps.cache-vulkan.outputs.cache-hit != 'true'
24
32
run : |
25
33
curl -LS -o vulkansdk.tar.xz https://sdk.lunarg.com/sdk/download/1.4.309.0/linux/vulkansdk-linux-x86_64-1.4.309.0.tar.xz
26
34
mkdir -p vulkan_sdk
27
35
tar xf vulkansdk.tar.xz -C vulkan_sdk
28
- export VULKAN_SDK=$GITHUB_WORKSPACE/vulkan_sdk/1.4.309.0/x86_64
29
- echo "VULKAN_SDK=$VULKAN_SDK" >> $GITHUB_ENV
30
- echo "PATH=$VULKAN_SDK/bin:$PATH" >> $GITHUB_ENV
31
- echo "LD_LIBRARY_PATH=$VULKAN_SDK/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV
32
- echo "VK_ICD_FILENAMES=$VULKAN_SDK/etc/vulkan/icd.d" >> $GITHUB_ENV
33
- echo "VK_LAYER_PATH=$VULKAN_SDK/etc/vulkan/layer.d" >> $GITHUB_ENV
34
36
37
+ # Set environment variables for Clang and Vulkan SDK
38
+ - name : Set environment variables
39
+ run : |
40
+ echo "CLANG_TIDY=clang-tidy-15" >> $GITHUB_ENV
41
+ echo "VULKAN_SDK=${GITHUB_WORKSPACE}/vulkan_sdk/1.4.309.0/x86_64" >> $GITHUB_ENV
42
+ echo "PATH=${GITHUB_WORKSPACE}/vulkan_sdk/1.4.309.0/x86_64/bin:$PATH" >> $GITHUB_ENV
43
+ echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/vulkan_sdk/1.4.309.0/x86_64/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV
44
+ echo "VK_ICD_FILENAMES=${GITHUB_WORKSPACE}/vulkan_sdk/1.4.309.0/x86_64/etc/vulkan/icd.d" >> $GITHUB_ENV
45
+ echo "VK_LAYER_PATH=${GITHUB_WORKSPACE}/vulkan_sdk/1.4.309.0/x86_64/etc/vulkan/layer.d" >> $GITHUB_ENV
46
+
47
+ # Configure the project with CMake
35
48
- name : Configure with CMake
36
49
run : |
37
50
cmake -S . -B build \
@@ -40,18 +53,27 @@ jobs:
40
53
-DCMAKE_C_COMPILER=clang-15 \
41
54
-DVMA_BUILD_SAMPLES=YES
42
55
43
- - name : Run Clang-Tidy
56
+ # List files to analyze
57
+ - name : Check the files found for clang-tidy
58
+ run : |
59
+ find src include \
60
+ -path '*/_deps/*' -prune -o \
61
+ -path '*/build/*' -prune -o \
62
+ \( -name '*.cpp' -o -name '*.hpp' \) -print
63
+
64
+ # Run clang-tidy in parallel
65
+ - name : Run clang-tidy
66
+ run : |
67
+ find src include \
68
+ -path '*/_deps/*' -prune -o \
69
+ -path '*/build/*' -prune -o \
70
+ \( -name '*.cpp' -o -name '*.hpp' \) -print0 |
71
+ parallel -0 clang-tidy -p build {} |
72
+ tee output || true
73
+
74
+ # Summarize warnings
75
+ - name : Summarize clang-tidy warnings
44
76
run : |
45
- find . -name '*.cpp' | xargs clang-tidy-15 -checks='*, \
46
- -modernize-use-trailing-return-type, \
47
- -cppcoreguidelines-macro-usage, \
48
- -modernize-use-auto, \
49
- -modernize-use-using \
50
- -modernize-use-nodiscard \
51
- -altera-unroll-loops \
52
- -misc-definitions-in-headers \
53
- -cppcoreguidelines-pro-bounds-pointer-arithmetic \
54
- -readability-function-cognitive-complexity \
55
- -llvmlibc-restrict-system-libc-headers \
56
- -cppcoreguidelines-pro-type-union-access' \
57
- -header-filter='.*vk_mem_alloc\.h' -p build || true
77
+ grep -hEo '\[[a-z0-9]+-[a-z0-9-]+\]' output \
78
+ | sort | uniq -c | sort -nr \
79
+ | sed 's/[][]//g' || true
0 commit comments