Skip to content

Commit 7bd3245

Browse files
committed
[ci] Create static analysis workflow with clang-tidy check
1 parent 19daf40 commit 7bd3245

File tree

1 file changed

+84
-0
lines changed

1 file changed

+84
-0
lines changed
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
name: Static Analysis
2+
on: [push, pull_request]
3+
4+
env:
5+
inexor_vulkan_version: "1.2.131.1"
6+
inexor_vulkan_sdk: "$GITHUB_WORKSPACE/../vulkan_sdk/"
7+
8+
jobs:
9+
clang-tidy:
10+
name: Clang Tidy
11+
runs-on: ubuntu-latest
12+
container: ubuntu:rolling
13+
env:
14+
DEBIAN_FRONTEND: "noninteractive"
15+
inexor_conan_path: "$HOME/.local/bin"
16+
steps:
17+
- name: Update environment
18+
run: |
19+
# Update package lists
20+
apt update -qq
21+
22+
# Install tools
23+
apt install -y \
24+
clang-tidy \
25+
cmake \
26+
curl \
27+
libgl1-mesa-dev \
28+
libx11-dev \
29+
libx11-xcb-dev \
30+
libxcb-dri3-dev \
31+
libxcb-icccm4-dev \
32+
libxcb-image0-dev \
33+
libxcb-keysyms1-dev \
34+
libxcb-randr0-dev \
35+
libxcb-render-util0-dev \
36+
libxcb-render0-dev \
37+
libxcb-shape0-dev \
38+
libxcb-sync-dev \
39+
libxcb-util-dev \
40+
libxcb-xfixes0-dev \
41+
libxcb-xinerama0-dev \
42+
libxcb-xkb-dev \
43+
parallel \
44+
pkg-config \
45+
python3 \
46+
python3-pip \
47+
xkb-data \
48+
xorg-dev
49+
50+
pip3 install wheel setuptools
51+
pip3 install conan mako
52+
53+
- name: Install Vulkan SDK
54+
run: |
55+
# Download Vulkan SDK
56+
curl -LS -o vulkansdk.tar.gz \
57+
https://sdk.lunarg.com/sdk/download/${{ env.inexor_vulkan_version }}/linux/vulkansdk-linux-x86_64-${{ env.inexor_vulkan_version }}.tar.gz
58+
# Create Vulkan SDK directory and extract
59+
mkdir "${{ env.inexor_vulkan_sdk }}"
60+
tar xfz vulkansdk.tar.gz -C "${{ env.inexor_vulkan_sdk }}"
61+
62+
- name: Checkout
63+
uses: actions/checkout@v2
64+
65+
- name: Configure CMake
66+
run: |
67+
export CC=gcc
68+
export CXX=g++
69+
export PATH="${{ env.inexor_conan_path }}":$PATH
70+
export VULKAN_SDK="${{ env.inexor_vulkan_sdk }}/${{ env.inexor_vulkan_version }}/x86_64"
71+
export PATH=$VULKAN_SDK/bin:$PATH
72+
export LD_LIBRARY_PATH=$VULKAN_SDK/lib:$LD_LIBRARY_PATH
73+
export VK_LAYER_PATH=$VULKAN_SDK/etc/explicit_layer.d
74+
cmake . -Bbuild -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
75+
76+
- name: Run clang-tidy
77+
run: |
78+
find example src \
79+
-name '*.cpp' \
80+
-print0 |
81+
parallel -0 \
82+
clang-tidy -p build --header-filter=inexor/ --quiet {} 2>/dev/null |
83+
tee output
84+
if [ -s output ]; then exit 1; fi

0 commit comments

Comments
 (0)