# Setting file for clang-tidy

Checks: >
  -*,
  boost-*,
  bugprone-*,
  -bugprone-easily-swappable-parameters,
  cert-*,
  cppcoreguidelines-*,
  hicpp-*,
  misc-*,
  modernize-*,
  -modernize-use-trailing-return-type,
  mpi-*,
  performance-*,
  readability-*,
  -readability-convert-member-functions-to-static,

CheckOptions:
# Ignore the macro expansions for complexity checks (e.g., deal.II's Assert)
  - key: readability-function-cognitive-complexity.IgnoreMacros
    value: 'true'

# Naming conventions
  - key:             readability-identifier-naming.ClassCase
    value:           CamelCase
  - key:             readability-identifier-naming.ClassMemberCase
    value:           lower_case
  - key:             readability-identifier-naming.ConstexprVariableCase
    value:           lower_case
  - key:             readability-identifier-naming.ConstexprFunctionCase
    value:           lower_case
  - key:             readability-identifier-naming.EnumCase
    value:           CamelCase
  - key:             readability-identifier-naming.EnumConstantCase
    value:           CamelCase
  - key:             readability-identifier-naming.FunctionCase
    value:           lower_case
  - key:             readability-identifier-naming.GlobalConstantCase
    value:           lower_case
  - key:             readability-identifier-naming.StaticConstantCase
    value:           lower_case
  - key:             readability-identifier-naming.StaticVariableCase
    value:           lower_case
  - key:             readability-identifier-naming.MacroDefinitionCase
    value:           UPPER_CASE
  - key:             readability-identifier-naming.MacroDefinitionIgnoredRegexp
    value:           '^[A-Z]+(_[A-Z]+)*_$'
  - key:             readability-identifier-naming.MemberCase
    value:           lower_case
  - key:             readability-identifier-naming.NamespaceCase
    value:           CamelCase
  - key:             readability-identifier-naming.ParameterCase
    value:           lower_case
  - key:             readability-identifier-naming.ParameterIgnoredRegexp
    value:           '^_[a-z]+(_[a-z]+)*$'
  - key:             readability-identifier-naming.TypeAliasCase
    value:           CamelCase
  - key:             readability-identifier-naming.TypedefCase
    value:           CamelCase
  - key:             readability-identifier-naming.VariableCase
    value:           lower_case
  - key:             readability-identifier-naming.IgnoreMainLikeFunctions
    value:           1

WarningsAsErrors: '*'
