---
# TODO Enable (some of) the explicitly disabled checks. Possibly needs helper types from gsl library or similar to enable full cppcoreguidelines.
# TODO Enable more checks (google-*, hicpp-*, llvm-*, modernize-*, mpi-*, performance-*, readability-*)
# TODO Maybe just enable * and disable a list instead?
# TODO Check if there's new checks in clang-tidy-9 and later and potentially enable them
# TODO Enable misc-include-cleaner
Checks: |
  clang-diagnostic-*,
  clang-analyzer-*,
  bugprone-*,
  cert-*,
  cppcoreguidelines-*,
  misc-*,
  boost-use-to-string,
  -cert-env33-c,
  -cert-err58-cpp,
  -cert-err60-cpp,
  -bugprone-macro-parentheses,
  -bugprone-exception-escape,
  -bugprone-easily-swappable-parameters,
  -bugprone-implicit-widening-of-multiplication-result,
  -bugprone-narrowing-conversions,
  -cppcoreguidelines-owning-memory,
  -cppcoreguidelines-no-malloc,
  -cppcoreguidelines-pro-type-const-cast,
  -cppcoreguidelines-pro-bounds-pointer-arithmetic,
  -cppcoreguidelines-pro-type-reinterpret-cast,
  -cppcoreguidelines-special-member-functions,
  -cppcoreguidelines-pro-type-cstyle-cast,
  -cppcoreguidelines-pro-bounds-array-to-pointer-decay,
  -cppcoreguidelines-pro-type-vararg,
  -cppcoreguidelines-avoid-goto,
  -cppcoreguidelines-avoid-magic-numbers,
  -cppcoreguidelines-macro-usage,
  -cppcoreguidelines-non-private-member-variables-in-classes,
  -cppcoreguidelines-avoid-non-const-global-variables,
  -cppcoreguidelines-narrowing-conversions,
  -cppcoreguidelines-use-default-member-init,
  -clang-analyzer-optin.cplusplus.VirtualCall,
  -clang-analyzer-cplusplus.NewDeleteLeaks,
  -misc-macro-parentheses,
  -misc-non-private-member-variables-in-classes,
  -misc-unused-raii
  -misc-include-cleaner
WarningsAsErrors: '*'
HeaderFilterRegex: '/src/|/test/'
CheckOptions:
  - key:   google-readability-braces-around-statements.ShortStatementLines
    value: '1'
  - key:   google-readability-function-size.StatementThreshold
    value: '800'
  - key:   google-readability-namespace-comments.ShortNamespaceLines
    value: '10'
  - key:   google-readability-namespace-comments.SpacesBeforeComments
    value: '2'
  - key:   modernize-loop-convert.MaxCopySize
    value: '16'
  - key:   modernize-loop-convert.MinConfidence
    value: reasonable
  - key:   modernize-loop-convert.NamingStyle
    value: CamelCase
  - key:   modernize-pass-by-value.IncludeStyle
    value: llvm
  - key:   modernize-replace-auto-ptr.IncludeStyle
    value: llvm
  - key:   modernize-use-nullptr.NullMacros
    value: 'NULL'
  - key:   cppcoreguidelines-rvalue-reference-param-not-moved.AllowPartialMove
    value: true
...
