# See SUPPRESSED_CHECKS in utils/check_clang_tidy_results.py
# Also disable all aliases, because they only result in duplication of work,
# except for clang-analyzer-* aliases, which behave strange, so we treat them
# as normal checks.
#
# Alias list must be updated when clang-tidy version is bumped. Current list
# was taken from:
# https://releases.llvm.org/14.0.0/tools/clang/tools/extra/docs/clang-tidy/checks/list.html
#
# TODO(tothxa): can be converted to "Checks: |" when lowest supported clang
#               version reaches 15
Checks: >-
  *,
  -abseil*,
  -altera*,
  -android*,
  -boost*,
  -*fuchsia*,
  -linuxkernel*,
  -mpi-*,
  -objc*,
  -openmp*,
  -*webkit*,
  -zircon*,
  -clang-analyzer-alpha*,
  -COMMENT---cannot-clean-up-yet---,
  -llvm-header-guard,
  -cert-dcl50-cpp,
  -cppcoreguidelines-pro-type-vararg,
  -COMMENT---probably-not-for-us---,
  -clang-analyzer-optin.mpi.MPI-Checker,
  -cppcoreguidelines-avoid-goto,
  -cppcoreguidelines-no-malloc,
  -cppcoreguidelines-owning-memory,
  -cppcoreguidelines-pro-bounds-array-to-pointer-decay,
  -cppcoreguidelines-pro-bounds-constant-array-index,
  -cppcoreguidelines-pro-bounds-pointer-arithmetic,
  -cppcoreguidelines-pro-type-const-cast,
  -cppcoreguidelines-pro-type-reinterpret-cast,
  -cppcoreguidelines-pro-type-union-access,
  -google-default-arguments,
  -hicpp-avoid-goto,
  -llvmlibc-callee-namespace,
  -llvmlibc-implementation-in-namespace,
  -llvmlibc-restrict-system-libc-headers,
  -misc-non-private-member-variables-in-classes,
  -misc-no-recursion,
  -modernize-avoid-c-arrays,
  -modernize-raw-string-literal,
  -modernize-replace-disallow-copy-and-assign-macro,
  -modernize-return-braced-init-list,
  -modernize-use-auto,
  -modernize-use-trailing-return-type,
  -readability-identifier-length,
  -readability-uppercase-literal-suffix,
  -COMMENT---to-be-cleaned-up---,
  -bugprone-easily-swappable-parameters,
  -bugprone-exception-escape,
  -bugprone-macro-parentheses,
  -bugprone-narrowing-conversions,
  -bugprone-not-null-terminated-result,
  -bugprone-signed-char-misuse,
  -bugprone-too-small-loop-variable,
  -cert-err33-c,
  -cert-err58-cpp,
  -cert-msc51-cpp,
  -clang-analyzer-core.CallAndMessage,
  -clang-analyzer-core.NonNullParamChecker,
  -clang-analyzer-cplusplus.NewDelete,
  -clang-analyzer-cplusplus.NewDeleteLeaks,
  -clang-analyzer-optin.cplusplus.UninitializedObject,
  -clang-analyzer-optin.cplusplus.VirtualCall,
  -clang-diagnostic-documentation-unknown-command,
  -concurrency-mt-unsafe,
  -cppcoreguidelines-avoid-non-const-global-variables,
  -cppcoreguidelines-init-variables,
  -cppcoreguidelines-macro-usage,
  -cppcoreguidelines-narrowing-conversions,
  -cppcoreguidelines-prefer-member-initializer,
  -cppcoreguidelines-pro-type-member-init,
  -cppcoreguidelines-slicing,
  -cppcoreguidelines-special-member-functions,
  -google-readability-casting,
  -google-runtime-references,
  -hicpp-multiway-paths-covered,
  -hicpp-signed-bitwise,
  -misc-macro-parentheses,
  -modernize-make-unique,
  -modernize-pass-by-value,
  -modernize-use-default-member-init,
  -performance-no-int-to-ptr,
  -performance-unnecessary-value-param,
  -readability-const-return-type,
  -readability-convert-member-functions-to-static,
  -readability-function-cognitive-complexity,
  -readability-function-size,
  -readability-magic-numbers,
  -readability-named-parameter,
  -readability-suspicious-call-argument,
  -COMMENT---disable-aliases---,
  -cert-con36-c,
  -cert-con54-cpp,
  -cert-dcl03-c,
  -cert-dcl16-c,
  -cert-dcl37-c,
  -cert-dcl51-cpp,
  -cert-dcl54-cpp,
  -cert-dcl59-cpp,
  -cert-err09-cpp,
  -cert-err61-cpp,
  -cert-exp42-c,
  -cert-fio38-c,
  -cert-flp37-c,
  -cert-msc30-c,
  -cert-msc32-c,
  -cert-oop11-cpp,
  -cert-oop54-cpp,
  -cert-pos44-c,
  -cert-pos47-c,
  -cert-sig30-c,
  -cert-str34-c,
  -cppcoreguidelines-avoid-c-arrays,
  -cppcoreguidelines-avoid-magic-numbers,
  -cppcoreguidelines-c-copy-assignment-signature,
  -cppcoreguidelines-explicit-virtual-functions,
  -cppcoreguidelines-non-private-member-variables-in-classes,
  -google-readability-braces-around-statements,
  -google-readability-function-size,
  -google-readability-namespace-comments,
  -hicpp-avoid-c-arrays,
  -hicpp-braces-around-statements,
  -hicpp-deprecated-headers,
  -hicpp-explicit-conversions,
  -hicpp-function-size,
  -hicpp-invalid-access-moved,
  -hicpp-member-init,
  -hicpp-move-const-arg,
  -hicpp-named-parameter,
  -hicpp-new-delete-operators,
  -hicpp-no-array-decay,
  -hicpp-no-malloc,
  -hicpp-noexcept-move,
  -hicpp-special-member-functions,
  -hicpp-static-assert,
  -hicpp-undelegated-constructor,
  -hicpp-uppercase-literal-suffix,
  -hicpp-use-auto,
  -hicpp-use-emplace,
  -hicpp-use-equals-default,
  -hicpp-use-equals-delete,
  -hicpp-use-noexcept,
  -hicpp-use-nullptr,
  -hicpp-use-override,
  -hicpp-vararg,
  -llvm-else-after-return,
  -llvm-qualified-auto
WarningsAsErrors: ''
HeaderFilterRegex:
  # This is to exclude 'src/third_party'. Needs to be updated, if any new
  # directory is added. It's an old outstanding feature request for clang-tidy
  # to make this easier...
  # It's better to list them, because the sources may be in e.g.
  #   /home/user/src/widelands/
  # TODO(tothxa): figure out which multiline format works...
  'src/((ai|base|chat|economy|editor|game_io|graphic|io|logic|map_io|network|notifications|scripting|sound|ui_basic|ui_fsmenu|website|wui)/|[a-z_]+\.h)'
AnalyzeTemporaryDtors: true
FormatStyle:     none
