Add clang-tidy linting script

Add groups we might be interested in and disable failing checks.

Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
This commit is contained in:
Ralph Sennhauser
2026-07-14 20:20:40 +02:00
parent 9598c6c2e1
commit 91a4b834a8
3 changed files with 173 additions and 1 deletions
+2 -1
View File
@@ -32,8 +32,9 @@ build/bin/
source/tools/spirv/rules.json
# Linting
cppcheck-error.log
compile_commands.json
copyright-check-error.log
cppcheck-error.log
# Files generated by running premake5
build/premake/.gccmachine.tmp
+148
View File
@@ -0,0 +1,148 @@
---
Checks:
# Some version of clang-tidy leak system configuration, so clear all checks first.
- -*
- bugprone-*
- -bugprone-assignment-in-if-condition
- -bugprone-branch-clone
- -bugprone-casting-through-void
- -bugprone-copy-constructor-init
- -bugprone-crtp-constructor-accessibility
- -bugprone-derived-method-shadowing-base-method
- -bugprone-easily-swappable-parameters
- -bugprone-exception-escape
- -bugprone-fold-init-type
- -bugprone-implicit-widening-of-multiplication-result
- -bugprone-inaccurate-erase
- -bugprone-inc-dec-in-conditions
- -bugprone-incorrect-roundings
- -bugprone-integer-division
- -bugprone-invalid-enum-default-initialization
- -bugprone-macro-parentheses
- -bugprone-multi-level-implicit-pointer-conversion
- -bugprone-narrowing-conversions
- -bugprone-non-zero-enum-to-bool-conversion
- -bugprone-nondeterministic-pointer-iteration-order
- -bugprone-parent-virtual-call
- -bugprone-pointer-arithmetic-on-polymorphic-object
- -bugprone-random-generator-seed
- -bugprone-reserved-identifier
- -bugprone-return-const-ref-from-parameter
- -bugprone-signed-char-misuse
- -bugprone-std-namespace-modification
- -bugprone-string-integer-assignment
- -bugprone-suspicious-include
- -bugprone-suspicious-memory-comparison
- -bugprone-suspicious-semicolon
- -bugprone-suspicious-stringview-data-usage
- -bugprone-switch-missing-default-case
- -bugprone-throwing-static-initialization
- -bugprone-too-small-loop-variable
- -bugprone-unchecked-optional-access
- -bugprone-unhandled-self-assignment
- -bugprone-unsafe-functions
- -bugprone-unused-local-non-trivial-variable
- -bugprone-use-after-move
- cppcoreguidelines-*
- -cppcoreguidelines-avoid-c-arrays
- -cppcoreguidelines-avoid-const-or-ref-data-members
- -cppcoreguidelines-avoid-do-while
- -cppcoreguidelines-avoid-goto
- -cppcoreguidelines-avoid-magic-numbers
- -cppcoreguidelines-avoid-non-const-global-variables
- -cppcoreguidelines-avoid-reference-coroutine-parameters
- -cppcoreguidelines-explicit-virtual-functions
- -cppcoreguidelines-init-variables
- -cppcoreguidelines-interfaces-global-init
- -cppcoreguidelines-macro-to-enum
- -cppcoreguidelines-macro-usage
- -cppcoreguidelines-missing-std-forward
- -cppcoreguidelines-narrowing-conversions
- -cppcoreguidelines-no-malloc
- -cppcoreguidelines-noexcept-move-operations
- -cppcoreguidelines-noexcept-swap
- -cppcoreguidelines-non-private-member-variables-in-classes
- -cppcoreguidelines-owning-memory
- -cppcoreguidelines-prefer-member-initializer
- -cppcoreguidelines-pro-bounds-array-to-pointer-decay
- -cppcoreguidelines-pro-bounds-avoid-unchecked-container-access
- -cppcoreguidelines-pro-bounds-constant-array-index
- -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-slicing
- -cppcoreguidelines-special-member-functions
- -cppcoreguidelines-use-default-member-init
- -cppcoreguidelines-use-enum-class
- -cppcoreguidelines-virtual-class-destructor
- modernize-*
- -modernize-avoid-bind
- -modernize-avoid-c-arrays
- -modernize-avoid-c-style-cast
- -modernize-avoid-setjmp-longjmp
- -modernize-avoid-variadic-functions
- -modernize-concat-nested-namespaces
- -modernize-deprecated-headers
- -modernize-loop-convert
- -modernize-macro-to-enum
- -modernize-make-shared
- -modernize-make-unique
- -modernize-min-max-use-initializer-list
- -modernize-pass-by-value
- -modernize-raw-string-literal
- -modernize-redundant-void-arg
- -modernize-return-braced-init-list
- -modernize-type-traits
- -modernize-use-auto
- -modernize-use-bool-literals
- -modernize-use-constraints
- -modernize-use-default-member-init
- -modernize-use-designated-initializers
- -modernize-use-emplace
- -modernize-use-equals-default
- -modernize-use-equals-delete
- -modernize-use-integer-sign-comparison
- -modernize-use-nodiscard
- -modernize-use-noexcept
- -modernize-use-nullptr
- -modernize-use-override
- -modernize-use-ranges
- -modernize-use-scoped-lock
- -modernize-use-starts-ends-with
- -modernize-use-std-numbers
- -modernize-use-trailing-return-type
- -modernize-use-transparent-functors
- -modernize-use-using
- performance-*
- -performance-avoid-endl
- -performance-enum-size
- -performance-faster-string-find
- -performance-for-range-copy
- -performance-inefficient-vector-operation
- -performance-move-const-arg
- -performance-move-constructor-init
- -performance-no-automatic-move
- -performance-no-int-to-ptr
- -performance-noexcept-move-constructor
- -performance-noexcept-swap
- -performance-type-promotion-in-math-fn
- -performance-unnecessary-copy-initialization
- -performance-unnecessary-value-param
WarningsAsErrors: ''
HeaderFileExtensions:
- h
ImplementationFileExtensions:
- cpp
HeaderFilterRegex: '.*'
ExcludeHeaderFilterRegex: '.*third_party.*'
FormatStyle: none
User: 'clang-tidy'
CheckOptions: {}
SystemHeaders: false
...
+23
View File
@@ -0,0 +1,23 @@
#!/bin/sh
if [ "$1" = '--list' ]; then
clang-tidy --list-checks -checks='*'
exit
fi
if [ "$1" = '--fix' ]; then
fix=-fix
shift
fi
./libraries/source/premake-core/bin/premake5 --file=build/premake/premake5.lua --minimal-flags --cc-config=Release compilecommands
jq 'map(select(.file | (test(".*source/third_party.*") | not) and (test(".*generated.*") | not) and (test(".*test.*") | not) ))' compile_commands.json >compile_commands_filtered.json
mv compile_commands_filtered.json compile_commands.json
if [ $# -eq 0 ]; then
run-clang-tidy -quiet -config-file=./source/tools/lint/clang-tidy/config.yml
else
# shellcheck disable=SC2086
IFS=',' run-clang-tidy -quiet ${fix} -checks="$*"
fi