This commit is contained in:
Jared Van Bortel 2025-06-22 17:01:32 -07:00 committed by GitHub
commit a703b503d1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 188 additions and 0 deletions

126
.clang-tidy Normal file
View File

@ -0,0 +1,126 @@
# vim: set ft=yaml:
HeaderFilterRegex: '/gpt4all-(backend|chat)/(src|include)/'
Checks:
- 'bugprone-*'
- 'cert-*'
- 'clang-analyzer-*'
- 'cppcoreguidelines-*'
- 'google-*'
- 'misc-*'
- 'modernize-*'
- 'performance-*'
- 'portability-*'
- 'readability-*'
- '-*-avoid-c-arrays'
- '-*-macro-to-enum'
- '-*-magic-numbers'
- '-*-narrowing-conversions'
- '-*-non-private-member-variables-in-classes'
- '-*-use-default-member-init'
- '-*readability-braces-around-statements'
- '-bugprone-assignment-in-if-condition'
- '-bugprone-branch-clone'
- '-bugprone-crtp-constructor-accessibility'
- '-bugprone-easily-swappable-parameters'
- '-bugprone-implicit-widening-of-multiplication-result'
- '-bugprone-inc-dec-in-conditions'
- '-bugprone-suspicious-string-compare'
- '-bugprone-suspicious-stringview-data-usage'
- '-bugprone-switch-missing-default-case'
- '-cert-dcl03-c'
- '-cert-err33-c'
- '-cert-err58-cpp'
- '-clang-analyzer-core.CallAndMessage'
- '-clang-analyzer-cplusplus.Move'
- '-clang-analyzer-deadcode.DeadStores'
- '-clang-analyzer-optin.performance.Padding'
- '-clang-diagnostic-missing-include-dirs'
- '-clang-diagnostic-unreachable-code-break'
- '-cppcoreguidelines-avoid-do-while'
- '-cppcoreguidelines-avoid-goto'
- '-cppcoreguidelines-avoid-non-const-global-variables'
- '-cppcoreguidelines-explicit-virtual-functions'
- '-cppcoreguidelines-init-variables'
- '-cppcoreguidelines-macro-usage'
- '-cppcoreguidelines-no-malloc'
- '-cppcoreguidelines-noexcept-move-operations'
- '-cppcoreguidelines-owning-memory'
- '-cppcoreguidelines-prefer-member-initializer'
- '-cppcoreguidelines-pro-bounds-array-to-pointer-decay'
- '-cppcoreguidelines-pro-bounds-pointer-arithmetic'
- '-cppcoreguidelines-pro-type-const-cast'
- '-cppcoreguidelines-pro-type-cstyle-cast'
- '-cppcoreguidelines-pro-type-member-init'
- '-cppcoreguidelines-pro-type-reinterpret-cast'
- '-cppcoreguidelines-pro-type-static-cast-downcast'
- '-cppcoreguidelines-pro-type-union-access'
- '-cppcoreguidelines-pro-type-vararg'
- '-cppcoreguidelines-rvalue-reference-param-not-moved'
- '-cppcoreguidelines-special-member-functions'
- '-cppcoreguidelines-virtual-class-destructor'
- '-google-build-using-namespace'
- '-google-default-arguments'
- '-google-explicit-constructor'
- '-google-global-names-in-headers'
- '-google-readability-casting'
- '-google-readability-namespace-comments'
- '-google-readability-todo'
- '-google-runtime-int'
- '-misc-const-correctness'
- '-misc-include-cleaner'
- '-misc-no-recursion'
- '-misc-static-assert'
- '-misc-unused-parameters'
- '-misc-use-anonymous-namespace'
- '-misc-use-internal-linkage'
- '-modernize-avoid-bind'
- '-modernize-deprecated-headers'
- '-modernize-loop-convert'
- '-modernize-pass-by-value'
- '-modernize-raw-string-literal'
- '-modernize-return-braced-init-list'
- '-modernize-use-auto'
- '-modernize-use-designated-initializers'
- '-modernize-use-equals-default'
- '-modernize-use-nodiscard'
- '-modernize-use-override'
- '-modernize-use-ranges'
- '-modernize-use-std-print'
- '-modernize-use-trailing-return-type'
- '-modernize-use-using'
- '-performance-avoid-endl'
- '-performance-enum-size'
- '-performance-faster-string-find'
- '-performance-for-range-copy'
- '-performance-implicit-conversion-in-loop'
- '-performance-move-const-arg'
- '-performance-noexcept-move-constructor'
- '-performance-no-automatic-move'
- '-performance-unnecessary-copy-initialization'
- '-performance-unnecessary-value-param'
- '-readability-avoid-const-params-in-decls'
- '-readability-avoid-nested-conditional-operator'
- '-readability-avoid-return-with-void-value'
- '-readability-avoid-unconditional-preprocessor-if'
- '-readability-const-return-type'
- '-readability-container-size-empty'
- '-readability-convert-member-functions-to-static'
- '-readability-else-after-return'
- '-readability-function-cognitive-complexity'
- '-readability-identifier-length'
- '-readability-implicit-bool-conversion'
- '-readability-inconsistent-declaration-parameter-name'
- '-readability-isolate-declaration'
- '-readability-math-missing-parentheses'
- '-readability-named-parameter'
- '-readability-non-const-parameter'
- '-readability-qualified-auto'
- '-readability-redundant-access-specifiers'
- '-readability-redundant-inline-specifier'
- '-readability-redundant-member-init'
- '-readability-redundant-string-init'
- '-readability-simplify-boolean-expr'
- '-readability-static-accessed-through-instance'
- '-readability-suspicious-call-argument'
- '-readability-uppercase-literal-suffix'
- '-readability-use-anyofallof'

62
.github/workflows/cpp-linter.yml vendored Normal file
View File

@ -0,0 +1,62 @@
name: cpp-linter
on:
pull_request:
paths: ['.github/workflows/cpp-linter.yml', '**.c', '**.cpp', '**.h', '**.inl', '**CMakeLists.txt', '**.cmake']
push:
branches: [main]
paths: ['.github/workflows/cpp-linter.yml', '**.c', '**.cpp', '**.h', '**.inl', '**CMakeLists.txt', '**.cmake']
jobs:
cpp-linter:
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Install dependencies
run: |
wget -qO- 'https://apt.llvm.org/llvm-snapshot.gpg.key' | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc >/dev/null
sudo add-apt-repository -y 'deb http://apt.llvm.org/noble/ llvm-toolchain-noble-19 main'
packages=(
clang-19 clang-format-19 clang-tidy-19 cmake git libgl-dev libopengl-dev libx11-6 libx11-xcb1 libxcb-glx0
libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-render0 libxcb-shape0
libxcb-shm0 libxcb-sync1 libxcb-xfixes0 libxcb-xinput0 libxcb-xkb1 libxcb1 libxkbcommon-dev
libxkbcommon-x11-0 libxkbcommon0 make
)
sudo apt-get update
sudo apt-get install -y "${packages[@]}" --no-install-recommends
- name: Install Qt
env:
QT_EMAIL: ${{ secrets.QT_EMAIL }}
QT_PASSWORD: ${{ secrets.QT_PASSWORD }}
run: |
wget 'https://qt.mirror.constant.com/archive/online_installers/4.8/qt-online-installer-linux-x64-4.8.0.run'
chmod +x qt-online-installer-linux-x64-4.8.0.run
./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.linux_gcc_64 extensions.qtpdf.680.linux_gcc_64 qt.qt6.680.addons.qthttpserver
- name: Configure
run: |
sed -i '/file(DOWNLOAD/,+4 s/^/#/' gpt4all-chat/CMakeLists.txt
cmake -S gpt4all-chat -B gpt4all-chat/build \
-DCMAKE_PREFIX_PATH=~/Qt/6.8.0/gcc_64/lib/cmake \
-DCMAKE_C_COMPILER=clang-19 \
-DCMAKE_CXX_COMPILER=clang++-19 \
-DLLMODEL_CUDA=OFF \
-DLLMODEL_KOMPUTE=OFF
- uses: cpp-linter/cpp-linter-action@v2
id: linter
with:
style: '' # no clang-format
extensions: 'c,cpp'
tidy-checks: '' # use .clang-tidy config
database: gpt4all-chat/build
version: 19
files-changed-only: false
ignore: 'gpt4all-chat/build/_deps|gpt4all-bindings'
- name: Fail Fast
if: steps.linter.outputs.clang-tidy-checks-failed > 0
run: exit 1