# Disabled some clang-analyzer static checks, need some more investigation.
# TODO(hzeller) fix and re-enable clang-analyzer checks.
# TODO(hzeller) Looking over magic numbers might be good, but probably
#               not worthwhile hard-failing
# TODO(hzeller) Explore anofalloff suggestions.
#
# readability-make-member-function-const is great, but it also suggests that
#    in cases where we return a non-const pointer. So good to check, not by
#    default.
#
# readability-qualified-auto is useful in general, however it suggests
#    to convert iterators (e.g. std::string_view::begin()) to the pointer it
#    returns; however since the iterator is implementation defined, this is not
#    a valid assertion. Running the check every now and then manually and
#    fixing all the non-iterator cases is useful though. Off by default.
#
# misc-const-correctness: useful, but it seems to be overzealous at times.
#
# modernize-make-unique: mostly correct, but wants to also replace .reset()
#                         which is a more readable way than assign.
#
# misc-include-cleaner: we do not exclude it here, as it is useful in itself
#                       locally running clang tidy checks (and potentially language
#                       server support); but since code is not 'clean' yet, we
#                       exclude it in the CI run.
#       Config: don't flag *_linter_test_utils.h as they define a test
#       template spezialization that clang-tidy fails to see is necessary.
#
# NOTE: Below, there must be no comments, otherwise clang tidy silently ignores
#       rules... (ask me how I know).
###
Checks: >
  clang-diagnostic-*,
  clang-analyzer-*,
  -clang-analyzer-core.NonNullParamChecker,
  -clang-analyzer-cplusplus.InnerPointer,
  -clang-analyzer-optin.core.EnumCastOutOfRange,
  -clang-analyzer-optin.performance.Padding,
  abseil-*,
  -abseil-no-namespace,
  readability-*,
  -readability-avoid-nested-conditional-operator,
  -readability-avoid-unconditional-preprocessor-if,
  -readability-braces-around-statements,
  -readability-convert-member-functions-to-static,
  -readability-function-cognitive-complexity,
  -readability-identifier-length,
  -readability-implicit-bool-conversion,
  -readability-isolate-declaration,
  -readability-magic-numbers,
  -readability-make-member-function-const,
  -readability-named-parameter,
  -readability-qualified-auto,
  -readability-redundant-access-specifiers,
  -readability-simplify-boolean-expr,
  -readability-static-definition-in-anonymous-namespace,
  -readability-uppercase-literal-suffix,
  -readability-use-anyofallof,
  google-*,
  -google-readability-avoid-underscore-in-googletest-name,
  -google-readability-casting,
  -google-readability-todo,
  performance-*,
  -performance-avoid-endl,
  -performance-enum-size,
  bugprone-*,
  -bugprone-branch-clone,
  -bugprone-easily-swappable-parameters,
  -bugprone-exception-escape,
  -bugprone-inc-dec-in-conditions,
  -bugprone-macro-parentheses,
  -bugprone-move-forwarding-reference,
  -bugprone-narrowing-conversions,
  -bugprone-suspicious-missing-comma,
  modernize-*,
  -modernize-avoid-bind,
  -modernize-avoid-c-arrays,
  -modernize-concat-nested-namespaces,
  -modernize-make-shared,
  -modernize-make-unique,
  -modernize-pass-by-value,
  -modernize-raw-string-literal,
  -modernize-return-braced-init-list,
  -modernize-type-traits,
  -modernize-use-auto,
  -modernize-use-emplace,
  -modernize-use-nodiscard,
  -modernize-use-trailing-return-type,
  -modernize-use-transparent-functors,
  misc-*,
  -misc-const-correctness,
  -misc-no-recursion,
  -misc-non-private-member-variables-in-classes,
  -misc-redundant-expression,
  -misc-unused-parameters,
  -misc-use-anonymous-namespace,

CheckOptions:
  - key:    misc-include-cleaner.IgnoreHeaders
    value:  .*-linter-test-utils\.h
