Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
160 changes: 141 additions & 19 deletions .clang-tidy
Original file line number Diff line number Diff line change
@@ -1,21 +1,143 @@
---
Checks:
- clang-diagnostic-*
- clang-analyzer-*
- -clang-diagnostic-unknown-pragmas
- bugprone-*
- -bugprone-assert-side-effect
- -bugprone-bad-signal-to-kill-thread
- -bugprone-bitwise-pointer-cast
- -bugprone-bool-pointer-implicit-conversion
- -bugprone-compare-pointer-to-member-virtual-function
- -bugprone-crtp-constructor-accessibility
- -bugprone-easily-swappable-parameters # Too sensitive
- -bugprone-forwarding-reference-overload
- -bugprone-implicit-widening-of-multiplication-result # Specific cases irrelevant in this repo
- -bugprone-lambda-function-name
- -bugprone-no-escape
- -bugprone-posix-return
- -bugprone-signal-handler
- -bugprone-signed-char-misuse # Specific use cases. Probably very rare.
- -bugprone-spuriously-wake-up-functions
- -bugprone-suspicious-stringview-data-usage # Probably harmless in this repo
- -bugprone-unused-raii
- cppcoreguidelines-avoid-const-or-ref-data-members
- cppcoreguidelines-avoid-goto
- cppcoreguidelines-avoid-non-const-global-variables
- cppcoreguidelines-init-variables
- cppcoreguidelines-macro-usage
- cppcoreguidelines-misleading-capture-default-by-value
- cppcoreguidelines-missing-std-forward
- cppcoreguidelines-prefer-member-initializer
- cppcoreguidelines-pro-bounds-array-to-pointer-decay
- 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-rvalue-reference-param-not-moved
- cppcoreguidelines-slicing
- cppcoreguidelines-virtual-class-destructor
- google-default-arguments
# - google-explicit-constructor # triggered for O2 columns
- google-global-names-in-headers
# - misc-const-correctness # to be checked
- misc-header-include-cycle
- misc-include-cleaner
- misc-misplaced-const
- misc-redundant-expression
- misc-unconventional-assign-operator
- misc-unused-alias-decls
- misc-unused-parameters
- misc-unused-using-decls
- modernize-avoid-bind
- modernize-avoid-c-arrays
- modernize-concat-nested-namespaces
- modernize-deprecated-headers
- modernize-make-shared
- modernize-make-unique
- modernize-redundant-void-arg
- modernize-return-braced-init-list
- modernize-use-auto
- modernize-use-default-member-init
- modernize-use-designated-initializers
- modernize-use-equals-default
- modernize-use-equals-delete
- modernize-use-nodiscard
- modernize-use-nullptr
- modernize-use-override
- modernize-use-starts-ends-with
- performance-for-range-copy
- performance-implicit-conversion-in-loop
- performance-inefficient-algorithm
- performance-inefficient-string-concatenation
- performance-inefficient-vector-operation
- performance-move-const-arg
- performance-no-automatic-move
- performance-trivially-destructible
- performance-type-promotion-in-math-fn
- performance-unnecessary-copy-initialization
- performance-unnecessary-value-param # slow
- readability-avoid-unconditional-preprocessor-if
- readability-braces-around-statements
- readability-const-return-type
- readability-container-contains
- readability-container-data-pointer
- readability-container-size-empty
- readability-delete-null-pointer
- readability-duplicate-include
- readability-else-after-return
- readability-enum-initial-value
- readability-implicit-bool-conversion
- readability-inconsistent-declaration-parameter-name
- readability-misplaced-array-index
- readability-non-const-parameter
- readability-redundant-access-specifiers
- readability-redundant-casting
- readability-redundant-control-flow
- readability-redundant-declaration
- readability-redundant-member-init
- readability-redundant-preprocessor
- readability-redundant-string-cstr
- readability-redundant-string-init
- readability-reference-to-constructed-temporary
- readability-simplify-boolean-expr
- readability-static-definition-in-anonymous-namespace
- readability-string-compare
- readability-suspicious-call-argument
WarningsAsErrors: >-
*,
-readability-braces-around-statements,
-readability-suspicious-call-argument,
CheckOptions:
modernize-avoid-c-arrays.AllowStringArrays: true
# Common tolerated conversions
bugprone-narrowing-conversions.WarnOnFloatingPointNarrowingConversion: false
bugprone-narrowing-conversions.WarnOnIntegerNarrowingConversion: false
bugprone-narrowing-conversions.WarnOnIntegerToFloatingPointNarrowingConversion: false
readability-implicit-bool-conversion.AllowLogicalOperatorConversion: true
readability-implicit-bool-conversion.AllowPointerConditions: true
# Some data model structs are missing some special functions by design.
cppcoreguidelines-special-member-functions.AllowMissingMoveFunctions: true
# Naming conventions
- { key: readability-identifier-naming.ClassCase, value: CamelCase }
- { key: readability-identifier-naming.ClassMemberPrefix, value: m }
- { key: readability-identifier-naming.ConceptCase, value: CamelCase }
- { key: readability-identifier-naming.ConstexprVariableCase, value: CamelCase }
- { key: readability-identifier-naming.EnumCase, value: CamelCase }
- { key: readability-identifier-naming.EnumConstantCase, value: CamelCase }
- { key: readability-identifier-naming.EnumConstantIgnoredRegexp, value: "^k?[A-Z][a-zA-Z0-9_]*$" } # Allow "k" prefix and non-trailing underscores in PDG names.
- { key: readability-identifier-naming.FunctionCase, value: camelBack }
- { key: readability-identifier-naming.MacroDefinitionCase, value: UPPER_CASE }
- { key: readability-identifier-naming.MacroDefinitionIgnoredRegexp, value: "^[A-Z][A-Z0-9_]*_$" } # Allow the trailing underscore in header guards.
- { key: readability-identifier-naming.MemberCase, value: camelBack }
- { key: readability-identifier-naming.NamespaceCase, value: lower_case }
- { key: readability-identifier-naming.ParameterCase, value: camelBack }
- { key: readability-identifier-naming.StructCase, value: CamelCase }
- { key: readability-identifier-naming.TemplateParameterCase, value: CamelCase }
- { key: readability-identifier-naming.TypeAliasCase, value: CamelCase }
- { key: readability-identifier-naming.TypedefCase, value: CamelCase }
- { key: readability-identifier-naming.TypeTemplateParameterCase, value: CamelCase }
- { key: readability-identifier-naming.VariableCase, value: camelBack }
readability-identifier-naming.ClassCase: CamelCase
readability-identifier-naming.ClassMemberPrefix: m
readability-identifier-naming.ConceptCase: CamelCase
readability-identifier-naming.ConstexprVariableCase: CamelCase
readability-identifier-naming.EnumCase: CamelCase
readability-identifier-naming.EnumConstantCase: CamelCase
readability-identifier-naming.EnumConstantIgnoredRegexp: "^k?[A-Z][a-zA-Z0-9_]*$" # Allow "k" prefix and non-trailing underscores in PDG names.
readability-identifier-naming.FunctionCase: camelBack
readability-identifier-naming.MacroDefinitionCase: UPPER_CASE
readability-identifier-naming.MacroDefinitionIgnoredRegexp: "^[A-Z][A-Z0-9_]*_$" # Allow the trailing underscore in header guards.
readability-identifier-naming.MemberCase: camelBack
readability-identifier-naming.NamespaceCase: lower_case
readability-identifier-naming.ParameterCase: camelBack
readability-identifier-naming.StructCase: CamelCase
readability-identifier-naming.TemplateParameterCase: CamelCase
readability-identifier-naming.TypeAliasCase: CamelCase
readability-identifier-naming.TypedefCase: CamelCase
readability-identifier-naming.TypeTemplateParameterCase: CamelCase
readability-identifier-naming.VariableCase: camelBack
...
Loading