# 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-inconsistent-ifelse-braces,
  -readability-isolate-declaration,
  -readability-magic-numbers,
  -readability-make-member-function-const,
  -readability-math-missing-parentheses,
  -readability-named-parameter,
  -readability-qualified-auto,
  -readability-redundant-access-specifiers,
  -readability-redundant-parentheses,
  -readability-redundant-typename,
  -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,
  -bugprone-throwing-static-initialization,
  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,
  -misc-use-internal-linkage,

CheckOptions:
  - key:    misc-include-cleaner.IgnoreHeaders
    value:  .*-linter-test-utils\.h
  - key:    misc-override-with-different-visibility.DisallowedVisibilityChange
    value:  widening
