Skip to content

Commit 2ea9920

Browse files
committed
ci: add GitHub action for clang-tidy
Signed-off-by: Jared Van Bortel <[email protected]>
1 parent 3320094 commit 2ea9920

File tree

2 files changed

+170
-0
lines changed

2 files changed

+170
-0
lines changed

.clang-tidy

+118
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
# vim: set ft=yaml:
2+
HeaderFilterRegex: '/gpt4all-(backend|chat)/(src|include)/'
3+
Checks:
4+
- 'bugprone-*'
5+
- 'cert-*'
6+
- 'clang-analyzer-*'
7+
- 'cppcoreguidelines-*'
8+
- 'google-*'
9+
- 'misc-*'
10+
- 'modernize-*'
11+
- 'performance-*'
12+
- 'portability-*'
13+
- 'readability-*'
14+
- '-*-avoid-c-arrays'
15+
- '-*-macro-to-enum'
16+
- '-*-magic-numbers'
17+
- '-*-narrowing-conversions'
18+
- '-*-non-private-member-variables-in-classes'
19+
- '-*-use-default-member-init'
20+
- '-*readability-braces-around-statements'
21+
- '-bugprone-assignment-in-if-condition'
22+
- '-bugprone-branch-clone'
23+
- '-bugprone-easily-swappable-parameters'
24+
- '-bugprone-implicit-widening-of-multiplication-result'
25+
- '-bugprone-inc-dec-in-conditions'
26+
- '-bugprone-suspicious-string-compare'
27+
- '-bugprone-switch-missing-default-case'
28+
- '-cert-dcl03-c'
29+
- '-cert-err33-c'
30+
- '-cert-err58-cpp'
31+
- '-clang-analyzer-core.CallAndMessage'
32+
- '-clang-analyzer-deadcode.DeadStores'
33+
- '-clang-analyzer-optin.performance.Padding'
34+
- '-clang-diagnostic-missing-include-dirs'
35+
- '-cppcoreguidelines-avoid-do-while'
36+
- '-cppcoreguidelines-avoid-goto'
37+
- '-cppcoreguidelines-avoid-non-const-global-variables'
38+
- '-cppcoreguidelines-explicit-virtual-functions'
39+
- '-cppcoreguidelines-init-variables'
40+
- '-cppcoreguidelines-macro-usage'
41+
- '-cppcoreguidelines-no-malloc'
42+
- '-cppcoreguidelines-noexcept-move-operations'
43+
- '-cppcoreguidelines-owning-memory'
44+
- '-cppcoreguidelines-prefer-member-initializer'
45+
- '-cppcoreguidelines-pro-bounds-array-to-pointer-decay'
46+
- '-cppcoreguidelines-pro-bounds-pointer-arithmetic'
47+
- '-cppcoreguidelines-pro-type-const-cast'
48+
- '-cppcoreguidelines-pro-type-cstyle-cast'
49+
- '-cppcoreguidelines-pro-type-member-init'
50+
- '-cppcoreguidelines-pro-type-reinterpret-cast'
51+
- '-cppcoreguidelines-pro-type-static-cast-downcast'
52+
- '-cppcoreguidelines-pro-type-vararg'
53+
- '-cppcoreguidelines-rvalue-reference-param-not-moved'
54+
- '-cppcoreguidelines-special-member-functions'
55+
- '-cppcoreguidelines-virtual-class-destructor'
56+
- '-google-build-using-namespace'
57+
- '-google-default-arguments'
58+
- '-google-explicit-constructor'
59+
- '-google-global-names-in-headers'
60+
- '-google-readability-casting'
61+
- '-google-readability-namespace-comments'
62+
- '-google-readability-todo'
63+
- '-google-runtime-int'
64+
- '-misc-const-correctness'
65+
- '-misc-include-cleaner'
66+
- '-misc-no-recursion'
67+
- '-misc-static-assert'
68+
- '-misc-unused-parameters'
69+
- '-misc-use-anonymous-namespace'
70+
- '-misc-use-internal-linkage'
71+
- '-modernize-avoid-bind'
72+
- '-modernize-deprecated-headers'
73+
- '-modernize-loop-convert'
74+
- '-modernize-raw-string-literal'
75+
- '-modernize-return-braced-init-list'
76+
- '-modernize-use-auto'
77+
- '-modernize-use-designated-initializers'
78+
- '-modernize-use-equals-default'
79+
- '-modernize-use-nodiscard'
80+
- '-modernize-use-override'
81+
- '-modernize-use-ranges'
82+
- '-modernize-use-std-print'
83+
- '-modernize-use-trailing-return-type'
84+
- '-modernize-use-using'
85+
- '-performance-avoid-endl'
86+
- '-performance-enum-size'
87+
- '-performance-faster-string-find'
88+
- '-performance-for-range-copy'
89+
- '-performance-implicit-conversion-in-loop'
90+
- '-performance-move-const-arg'
91+
- '-performance-noexcept-move-constructor'
92+
- '-performance-unnecessary-copy-initialization'
93+
- '-performance-unnecessary-value-param'
94+
- '-readability-avoid-const-params-in-decls'
95+
- '-readability-avoid-nested-conditional-operator'
96+
- '-readability-avoid-return-with-void-value'
97+
- '-readability-avoid-unconditional-preprocessor-if'
98+
- '-readability-const-return-type'
99+
- '-readability-container-size-empty'
100+
- '-readability-convert-member-functions-to-static'
101+
- '-readability-else-after-return'
102+
- '-readability-function-cognitive-complexity'
103+
- '-readability-identifier-length'
104+
- '-readability-implicit-bool-conversion'
105+
- '-readability-inconsistent-declaration-parameter-name'
106+
- '-readability-math-missing-parentheses'
107+
- '-readability-named-parameter'
108+
- '-readability-non-const-parameter'
109+
- '-readability-qualified-auto'
110+
- '-readability-redundant-access-specifiers'
111+
- '-readability-redundant-inline-specifier'
112+
- '-readability-redundant-member-init'
113+
- '-readability-redundant-string-init'
114+
- '-readability-simplify-boolean-expr'
115+
- '-readability-static-accessed-through-instance'
116+
- '-readability-suspicious-call-argument'
117+
- '-readability-uppercase-literal-suffix'
118+
- '-readability-use-anyofallof'

.github/workflows/cpp-linter.yml

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
name: cpp-linter
2+
3+
on:
4+
pull_request:
5+
paths: ['**.c', '**.cpp', '**.h', '**.inl', '**CMakeLists.txt', '**.cmake']
6+
push:
7+
branches: [main]
8+
paths: ['**.c', '**.cpp', '**.h', '**.inl', '**CMakeLists.txt', '**.cmake']
9+
10+
jobs:
11+
cpp-linter:
12+
name: Clazy
13+
runs-on: ubuntu-24.04
14+
steps:
15+
- name: Checkout
16+
uses: actions/checkout@v4
17+
with:
18+
submodules: 'recursive'
19+
- name: Install dependencies
20+
run: |
21+
wget -qO- 'https://apt.llvm.org/llvm-snapshot.gpg.key' | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc >/dev/null
22+
sudo add-apt-repository -y 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-18 main'
23+
sudo apt-get update
24+
sudo apt-get install clang-18 clang-format-18 clang-tidy-18 cmake libopengl-dev libxkbcommon-dev
25+
- name: Install Qt
26+
env:
27+
QT_EMAIL: ${{ secrets.QT_EMAIL }}
28+
QT_PASSWORD: ${{ secrets.QT_PASSWORD }}
29+
run: |
30+
wget 'https://qt.mirror.constant.com/archive/online_installers/4.8/qt-online-installer-linux-x64-4.8.0.run'
31+
chmod +x qt-online-installer-linux-x64-4.8.0.run
32+
./qt-online-installer-linux-x64-4.8.0.run --no-force-installations --no-default-installations --no-size-checking --default-answer --accept-licenses --confirm-command --accept-obligations --email "$QT_EMAIL" --password "$QT_PASSWORD" install qt.qt6.680.gcc_64 qt.qt6.680.addons.qtpdf qt.qt6.680.addons.qthttpserver
33+
- name: Configure
34+
run: |
35+
sed -i '/file(DOWNLOAD/,+4 s/^/#/' CMakeLists.txt
36+
cmake -S gpt4all-chat -B gpt4all-chat/build \
37+
-DCMAKE_C_COMPILER=clang-18 \
38+
-DCMAKE_CXX_COMPILER=clang++-18 \
39+
-DLLMODEL_CUDA=OFF \
40+
-DLLMODEL_KOMPUTE=OFF
41+
- uses: cpp-linter/cpp-linter-action@v2
42+
id: linter
43+
env:
44+
with:
45+
style: '' # no clang-format
46+
extensions: 'c,cpp,h,inl'
47+
tidy-checks: '' # use .clang-tidy config
48+
database: gpt4all-chat/build
49+
version: 18
50+
- name: Fail Fast
51+
if: steps.linter.outputs.clang-tidy-checks-failed > 0
52+
run: exit 1

0 commit comments

Comments
 (0)