Skip to content

Commit 246044a

Browse files
committed
Github actions: Add clang-tidy run to CI
Currently CI will not fail if there are warnings from clang-tidy. This is, for the time being, only a way to easily see the messages. Clang-tidy has its own workflow, so it doesn't interfere with the rest. But because it also needs cmake to run, the cmake run has been taken out of the 'build-and-test' action and put into its own. This commit also disables some clang-tidy warnings we get from newer versions of clang-tidy.
1 parent 882e065 commit 246044a

File tree

6 files changed

+91
-23
lines changed

6 files changed

+91
-23
lines changed

.clang-tidy

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
Checks: '*,-abseil-*,-altera-*,-android-cloexec-*,-bugprone-easily-swappable-parameters,-cert-err58-cpp,-cppcoreguidelines-avoid-magic-numbers,-cppcoreguidelines-avoid-non-const-global-variables,-cppcoreguidelines-owning-memory,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-type-cstyle-cast,-cppcoreguidelines-pro-type-reinterpret-cast,-cppcoreguidelines-pro-type-static-cast-downcast,-cppcoreguidelines-pro-type-vararg,-fuchsia-*,-google-readability-casting,-google-readability-todo,-hicpp-named-parameter,-hicpp-no-array-decay,-hicpp-vararg,-llvm-include-order,-llvm-header-guard,-llvmlibc-*,-misc-no-recursion,-modernize-use-nodiscard,-modernize-use-trailing-return-type,-readability-identifier-length,-readability-implicit-bool-conversion,-readability-named-parameter,-readability-magic-numbers'
2+
Checks: '*,-abseil-*,-altera-*,-android-cloexec-*,-bugprone-easily-swappable-parameters,-cert-err58-cpp,-cppcoreguidelines-avoid-do-while,-cppcoreguidelines-avoid-magic-numbers,-cppcoreguidelines-avoid-non-const-global-variables,-cppcoreguidelines-owning-memory,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-type-cstyle-cast,-cppcoreguidelines-pro-type-reinterpret-cast,-cppcoreguidelines-pro-type-static-cast-downcast,-cppcoreguidelines-pro-type-vararg,-fuchsia-*,-google-readability-casting,-google-readability-todo,-hicpp-named-parameter,-hicpp-no-array-decay,-hicpp-vararg,-llvm-include-order,-llvm-header-guard,-llvmlibc-*,-misc-include-cleaner,-misc-no-recursion,-misc-use-anonymous-namespace,-modernize-use-nodiscard,-modernize-use-trailing-return-type,-readability-identifier-length,-readability-implicit-bool-conversion,-readability-named-parameter,-readability-magic-numbers'
33
#
44
# cppcoreguidelines-pro-type-cstyle-cast
55
# google-build-using-namespace
@@ -26,6 +26,10 @@ Checks: '*,-abseil-*,-altera-*,-android-cloexec-*,-bugprone-easily-swappable-par
2626
# There are many of these in the test code, most of them from the Catch
2727
# framework. Difficult to avoid.
2828
#
29+
# cppcoreguidelines-avoid-do-while (new in clang-tidy-16)
30+
# Its a good idea to avoid them when there are better alternatives, but
31+
# sometimes they are the cleanest alternative.
32+
#
2933
# cppcoreguidelines-avoid-magic-numbers
3034
# readability-magic-numbers
3135
# We have a lot of these and should probably at least fix some. But remove
@@ -55,9 +59,15 @@ Checks: '*,-abseil-*,-altera-*,-android-cloexec-*,-bugprone-easily-swappable-par
5559
# llvmlibc-*
5660
# Not applicable
5761
#
62+
# misc-include-cleaner (new in clang-tidy-17)
63+
# Many instances of this warning, disabled for now. (TODO)
64+
#
5865
# misc-no-recursion
5966
# Nothing wrong with recursion
6067
#
68+
# misc-use-anonymous-namespace (new in clang-tidy-16)
69+
# Lots of these, need some time to fix. (TODO)
70+
#
6171
# modernize-use-nodiscard
6272
# We have a lot of these. Remove it for the time being because there are
6373
# too many to fix quickly. (TODO)

.github/actions/build-and-test/action.yml

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,28 +10,6 @@ runs:
1010
using: composite
1111

1212
steps:
13-
- name: create build directory
14-
run: mkdir build
15-
shell: bash
16-
17-
- name: configure
18-
run: |
19-
CMAKE_OPTIONS="-LA -DBUILD_TESTS=ON -DWITH_LUAJIT=${LUAJIT_OPTION}"
20-
if [ -n "$WITH_PROJ" ]; then
21-
CMAKE_OPTIONS="$CMAKE_OPTIONS -DWITH_PROJ=$WITH_PROJ"
22-
fi
23-
if [ -n "$CPP_VERSION" ]; then
24-
CMAKE_OPTIONS="$CMAKE_OPTIONS -DCMAKE_CXX_STANDARD=$CPP_VERSION"
25-
fi
26-
if [ -n "$BUILD_TYPE" ]; then
27-
CMAKE_OPTIONS="$CMAKE_OPTIONS -DCMAKE_BUILD_TYPE=$BUILD_TYPE"
28-
fi
29-
cmake $CMAKE_OPTIONS ..
30-
shell: bash
31-
working-directory: build
32-
env:
33-
CXXFLAGS: -pedantic -Wextra ${{ env.EXTRA_FLAGS }} -Werror
34-
3513
- name: build
3614
run: make -j3 all man
3715
shell: bash
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
name: Run clang-tidy
2+
3+
runs:
4+
using: composite
5+
6+
steps:
7+
- name: Run clang-tidy
8+
run: run-clang-tidy-17 -q -p build
9+
shell: bash
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: CMake
2+
3+
runs:
4+
using: composite
5+
6+
steps:
7+
- name: create build directory
8+
run: mkdir build
9+
shell: bash
10+
11+
- name: configure
12+
run: |
13+
CMAKE_OPTIONS="-LA -DBUILD_TESTS=ON -DWITH_LUAJIT=${LUAJIT_OPTION}"
14+
if [ -n "$WITH_PROJ" ]; then
15+
CMAKE_OPTIONS="$CMAKE_OPTIONS -DWITH_PROJ=$WITH_PROJ"
16+
fi
17+
if [ -n "$CPP_VERSION" ]; then
18+
CMAKE_OPTIONS="$CMAKE_OPTIONS -DCMAKE_CXX_STANDARD=$CPP_VERSION"
19+
fi
20+
if [ -n "$BUILD_TYPE" ]; then
21+
CMAKE_OPTIONS="$CMAKE_OPTIONS -DCMAKE_BUILD_TYPE=$BUILD_TYPE"
22+
fi
23+
cmake $CMAKE_OPTIONS ..
24+
shell: bash
25+
working-directory: build
26+
env:
27+
CXXFLAGS: -pedantic -Wextra ${{ env.EXTRA_FLAGS }} -Werror
28+

.github/workflows/ci.yml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ jobs:
4242
psql -d postgres -c "CREATE TABLESPACE tablespacetest LOCATION '$GITHUB_WORKSPACE/tablespacetest'"
4343
shell: bash
4444

45+
- uses: ./.github/actions/linux-cmake
4546
- uses: ./.github/actions/build-and-test
4647
with:
4748
test-wrapper: ''
@@ -65,6 +66,7 @@ jobs:
6566
steps:
6667
- uses: actions/checkout@v4
6768
- uses: ./.github/actions/ubuntu-prerequisites
69+
- uses: ./.github/actions/linux-cmake
6870
- uses: ./.github/actions/build-and-test
6971

7072
ubuntu20-pg96-clang10-jit:
@@ -83,6 +85,7 @@ jobs:
8385
steps:
8486
- uses: actions/checkout@v4
8587
- uses: ./.github/actions/ubuntu-prerequisites
88+
- uses: ./.github/actions/linux-cmake
8689
- uses: ./.github/actions/build-and-test
8790

8891
ubuntu20-pg10-gcc10:
@@ -102,6 +105,7 @@ jobs:
102105
steps:
103106
- uses: actions/checkout@v4
104107
- uses: ./.github/actions/ubuntu-prerequisites
108+
- uses: ./.github/actions/linux-cmake
105109
- uses: ./.github/actions/build-and-test
106110

107111

@@ -121,6 +125,7 @@ jobs:
121125
steps:
122126
- uses: actions/checkout@v4
123127
- uses: ./.github/actions/ubuntu-prerequisites
128+
- uses: ./.github/actions/linux-cmake
124129
- uses: ./.github/actions/build-and-test
125130

126131
ubuntu20-pg13-gcc10-jit:
@@ -139,6 +144,7 @@ jobs:
139144
steps:
140145
- uses: actions/checkout@v4
141146
- uses: ./.github/actions/ubuntu-prerequisites
147+
- uses: ./.github/actions/linux-cmake
142148
- uses: ./.github/actions/build-and-test
143149

144150

@@ -158,6 +164,7 @@ jobs:
158164
steps:
159165
- uses: actions/checkout@v4
160166
- uses: ./.github/actions/ubuntu-prerequisites
167+
- uses: ./.github/actions/linux-cmake
161168
- uses: ./.github/actions/build-and-test
162169

163170
ubuntu20-pg15-clang10-noproj:
@@ -177,6 +184,7 @@ jobs:
177184
steps:
178185
- uses: actions/checkout@v4
179186
- uses: ./.github/actions/ubuntu-prerequisites
187+
- uses: ./.github/actions/linux-cmake
180188
- uses: ./.github/actions/build-and-test
181189

182190
ubuntu20-pg16-clang10:
@@ -195,6 +203,7 @@ jobs:
195203
steps:
196204
- uses: actions/checkout@v4
197205
- uses: ./.github/actions/ubuntu-prerequisites
206+
- uses: ./.github/actions/linux-cmake
198207
- uses: ./.github/actions/build-and-test
199208

200209
ubuntu20-pg13-gcc10-release:
@@ -213,6 +222,7 @@ jobs:
213222
steps:
214223
- uses: actions/checkout@v4
215224
- uses: ./.github/actions/ubuntu-prerequisites
225+
- uses: ./.github/actions/linux-cmake
216226
- uses: ./.github/actions/build-and-test
217227

218228
ubuntu22-pg16-clang14-jit:
@@ -231,6 +241,7 @@ jobs:
231241
steps:
232242
- uses: actions/checkout@v4
233243
- uses: ./.github/actions/ubuntu-prerequisites
244+
- uses: ./.github/actions/linux-cmake
234245
- uses: ./.github/actions/build-and-test
235246

236247
ubuntu22-pg16-clang14-proj:
@@ -249,6 +260,7 @@ jobs:
249260
steps:
250261
- uses: actions/checkout@v4
251262
- uses: ./.github/actions/ubuntu-prerequisites
263+
- uses: ./.github/actions/linux-cmake
252264
- uses: ./.github/actions/build-and-test
253265

254266
ubuntu22-pg16-clang14-noproj:
@@ -268,6 +280,7 @@ jobs:
268280
steps:
269281
- uses: actions/checkout@v4
270282
- uses: ./.github/actions/ubuntu-prerequisites
283+
- uses: ./.github/actions/linux-cmake
271284
- uses: ./.github/actions/build-and-test
272285

273286
ubuntu22-pg15-clang14:
@@ -286,6 +299,7 @@ jobs:
286299
steps:
287300
- uses: actions/checkout@v4
288301
- uses: ./.github/actions/ubuntu-prerequisites
302+
- uses: ./.github/actions/linux-cmake
289303
- uses: ./.github/actions/build-and-test
290304

291305
ubuntu22-pg16-gcc12-release:
@@ -305,6 +319,7 @@ jobs:
305319
steps:
306320
- uses: actions/checkout@v4
307321
- uses: ./.github/actions/ubuntu-prerequisites
322+
- uses: ./.github/actions/linux-cmake
308323
- uses: ./.github/actions/build-and-test
309324

310325
ubuntu22-pg16-clang15-cpp20:
@@ -324,6 +339,7 @@ jobs:
324339
steps:
325340
- uses: actions/checkout@v4
326341
- uses: ./.github/actions/ubuntu-prerequisites
342+
- uses: ./.github/actions/linux-cmake
327343
- uses: ./.github/actions/build-and-test
328344

329345
ubuntu22-pg16-gcc12-cpp20:
@@ -343,6 +359,7 @@ jobs:
343359
steps:
344360
- uses: actions/checkout@v4
345361
- uses: ./.github/actions/ubuntu-prerequisites
362+
- uses: ./.github/actions/linux-cmake
346363
- uses: ./.github/actions/build-and-test
347364

348365
ubuntu24-pg16-gcc14:
@@ -362,6 +379,7 @@ jobs:
362379
steps:
363380
- uses: actions/checkout@v4
364381
- uses: ./.github/actions/ubuntu-prerequisites
382+
- uses: ./.github/actions/linux-cmake
365383
- uses: ./.github/actions/build-and-test
366384

367385
windows:

.github/workflows/clang-tidy.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: clang-tidy
2+
3+
on: [ push, pull_request ]
4+
5+
jobs:
6+
clang-tidy:
7+
runs-on: ubuntu-24.04
8+
9+
env:
10+
CC: clang-18
11+
CXX: clang++-18
12+
LUA_VERSION: 5.4
13+
LUAJIT_OPTION: OFF
14+
POSTGRESQL_VERSION: 16
15+
POSTGIS_VERSION: 3
16+
BUILD_TYPE: Debug
17+
PSYCOPG: 3
18+
PIP_OPTION: --break-system-packages
19+
20+
steps:
21+
- uses: actions/checkout@v4
22+
- uses: ./.github/actions/ubuntu-prerequisites
23+
- uses: ./.github/actions/linux-cmake
24+
- uses: ./.github/actions/clang-tidy
25+

0 commit comments

Comments
 (0)