#
# clang-tidy configuration file.
#
# https://clang.llvm.org/extra/clang-tidy/
# https://clang.llvm.org/extra/clang-tidy/checks/list.html
#
# Reasons for disabling specific checks:
#
# - bugprone-easily-swappable-parameters:
#   Disabled because, too many false positives.
#
# - bugprone-narrowing-conversions:
#   Disabled because, too many false positives.
#
# - misc-use-internal-linkage:
#   Disabled because, Swig has problems with symbol lookup for internal linkage.
#   This results in errors like "undefined symbol: ...".
#
Checks: >
  -*,
  bugprone-*,
  -bugprone-easily-swappable-parameters,
  -bugprone-narrowing-conversions,
  clang-diagnostic-*,
  -clang-analyzer-*,
  cert-err34-c,
  cppcoreguidelines-*,
  -cppcoreguidelines-avoid-non-const-global-variables,
  -cppcoreguidelines-avoid-magic-numbers,
  -cppcoreguidelines-narrowing-conversions,
  -cppcoreguidelines-pro-bounds-constant-array-index,
  -cppcoreguidelines-non-private-member-variables-in-classes,
  -cppcoreguidelines-pro-type-union-access,
  google-explicit-constructor,
  misc-*,
  -misc-use-internal-linkage,
  -misc-no-recursion,
  -misc-include-cleaner,
  -misc-non-private-member-variables-in-classes,
  modernize-*,
  -modernize-use-auto,
  -modernize-use-trailing-return-type,
  -modernize-use-nodiscard,
  performance-*,
  portability-*,
  readability-*,
  -readability-identifier-length,
  -readability-magic-numbers,
  -readability-function-cognitive-complexity,
  -readability-convert-member-functions-to-static

WarningsAsErrors: >
  clang-analyzer-security.*

# Analyze only headers under include/ and not system headers.
HeaderFilterRegex: '^src/.*'
SystemHeaders: false

# Use our .clang-format file when applying fixes.
FormatStyle: file
