# vim: ft=yaml et sw=2

# clang-tidy expects `Checks` to be a comma-separated string, 
# hence '> ...' multiline string syntax
#
# NOTE: all mentioned checks are potentially useful, however some overly chatty
# ones are explicitly disabled until there is a way to auto-fix them all
#
Checks: >
  -*,

  bugprone-argument-comment,
  bugprone-string-integer-assignment,
  bugprone-suspicious-include,
  bugprone-use-after-move,
  -bugprone-infinite-loop,
  -bugprone-branch-clone,
  -bugprone-exception-escape,
  -bugprone-lambda-function-name,
  -bugprone-macro-parentheses,
  -bugprone-narrowing-conversions,
  -bugprone-reserved-identifier,
  -bugprone-signed-char-misuse,

  cppcoreguidelines-explicit-virtual-functions,
  -cppcoreguidelines-avoid-c-arrays,
  -cppcoreguidelines-avoid-magic-numbers,
  -cppcoreguidelines-avoid-non-const-global-variables,
  -cppcoreguidelines-init-variables,
  -cppcoreguidelines-interfaces-global-init,
  -cppcoreguidelines-macro-usage,
  -cppcoreguidelines-narrowing-conversions,
  -cppcoreguidelines-no-malloc,
  -cppcoreguidelines-non-private-member-variables-in-classes,
  -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-cstyle-cast,
  -cppcoreguidelines-pro-type-member-init,
  -cppcoreguidelines-pro-type-reinterpret-cast,
  -cppcoreguidelines-pro-type-static-cast-downcast,
  -cppcoreguidelines-pro-type-union-access,
  -cppcoreguidelines-pro-type-vararg,
  -cppcoreguidelines-special-member-functions,

  -fuchsia-statically-constructed-objects,

  llvm-namespace-comment,

  misc-definitions-in-headers,

  modernize-use-nullptr,
  modernize-make-unique,
  modernize-make-shared,
  -modernize-avoid-bind,
  modernize-concat-nested-namespaces,
  -modernize-deprecated-headers,
  -modernize-loop-convert,
  -modernize-pass-by-value,
  -modernize-raw-string-literal,
  -modernize-use-auto,
  -modernize-use-default-member-init,
  -modernize-use-emplace,
  -modernize-use-equals-default,
  -modernize-use-equals-delete,
  -modernize-use-nodiscard,
  -modernize-use-using,

  performance-faster-string-find,
  -performance-for-range-copy,
  -performance-inefficient-string-concatenation,
  -performance-inefficient-vector-operation,
  performance-move-const-arg,
  performance-no-automatic-move,
  -performance-no-int-to-ptr,
  performance-noexcept-move-constructor,
  performance-unnecessary-copy-initialization,
  -performance-unnecessary-value-param,

  readability-avoid-const-params-in-decls,
  readability-braces-around-statements,
  readability-const-return-type,
  -readability-container-size-empty,
  readability-convert-member-functions-to-static,
  readability-deleted-default,
  -readability-else-after-return,
  -readability-function-cognitive-complexity,
  -readability-function-size,
  -readability-identifier-naming,
  -readability-implicit-bool-conversion,
  readability-inconsistent-declaration-parameter-name,
  readability-isolate-declaration,
  -readability-magic-numbers,
  readability-make-member-function-const,
  readability-named-parameter,
  readability-non-const-parameter,
  -readability-qualified-auto,
  -readability-redundant-access-specifiers,
  readability-redundant-control-flow,
  readability-redundant-declaration,
  -readability-redundant-member-init,
  readability-redundant-smartptr-get,
  readability-redundant-string-cstr,
  readability-redundant-string-init,
  -readability-simplify-boolean-expr,
  readability-static-accessed-through-instance,
  readability-static-definition-in-anonymous-namespace,
  -readability-uppercase-literal-suffix,
  -readability-use-anyofallof,

CheckOptions:
  - { key: readability-identifier-naming.ClassCase,           value: CamelCase  }
  - { key: readability-identifier-naming.PrivateMemberCase,   value: camelBack  }
  - { key: readability-identifier-naming.PrivateMemberSuffix, value: _          }
  - { key: readability-identifier-naming.FunctionCase,        value: camelBack  }
