---

# Exceptions:
# bugprone-branch-clone is too noisy in parsing code.
# bugprone-easily-swappable-parameters is too noisy.
# cert-dcl50-cpp is triggered by hz::string_sprintf()'s C style.
# clang-analyzer-deadcode.DeadStores is too noisy.
# clang-analyzer-cplusplus.NewDeleteLeaks doesn't understand Gtkmm memory management.
# cppcoreguidelines-avoid-magic-numbers, readability-magic-numbers is triggered by attribute database.
# cppcoreguidelines-avoid-do-while is triggered in DBG macros.
# cppcoreguidelines-owning-memory doesn't support deleting Gtkmm objects.
# cppcoreguidelines-pro-type-cstyle-cast needed by GTK C casts.
# cppcoreguidelines-pro-type-reinterpret-cast is needed by WinAPI-facing functions
# cppcoreguidelines-pro-type-vararg is triggered by hz::string_sprintf().
# cppcoreguidelines-pro-bounds-array-to-pointer-decay is triggered by va_start in hz::string_sprintf().
# cppcoreguidelines-pro-bounds-pointer-arithmetic is useless (triggered by argv) until we have std::span.
# misc-include-cleaner does not really work.
# misc-no-recursion is too noisy.
# modernize-raw-string-literal is very noisy.
# modernize-use-trailing-return-type is contrary to our style.
# performance-enum-size is too noisy.
# readability-avoid-unconditional-preprocessor-if is triggered on platform-specific code
# readability-convert-member-functions-to-static is triggered for many callbacks.
# readability-function-cognitive-complexity needed by UI constructors.
# readability-isolate-declaration is noisy.
# readability-identifier-length is too noisy.


Checks:          >
  -abseil-*,
  -altera-*,
  -android-*,
  -boost-*,
  bugprone-*,
  -bugprone-branch-clone,
  -bugprone-easily-swappable-parameters,
  cert-*,
  -cert-dcl50-cpp,
  clang-analyzer-*,
  -clang-analyzer-deadcode.DeadStores,
  -clang-analyzer-cplusplus.NewDeleteLeaks,
  concurrency-*,
  cppcoreguidelines-*,
  -cppcoreguidelines-avoid-magic-numbers,
  -cppcoreguidelines-avoid-do-while,
  -cppcoreguidelines-owning-memory,
  -cppcoreguidelines-pro-bounds-array-to-pointer-decay,
  -cppcoreguidelines-pro-type-cstyle-cast,
  -cppcoreguidelines-pro-type-reinterpret-cast,
  -cppcoreguidelines-pro-type-vararg,
  -cppcoreguidelines-pro-bounds-pointer-arithmetic,
  -darwin-*,
  -fuchsia-*,
  google-*
  hicpp-*,
  -linuxkernel-*,
  -llvm-*,
  -llvmlibc-*,
  misc-*,
  -misc-include-cleaner,
  -misc-no-recursion,
  modernize-*,
  -modernize-use-trailing-return-type,
  -modernize-raw-string-literal,
  -mpi-*,
  -objc-*,
  openmp-*,
  performance-*,
  -performance-enum-size,
  portability-*,
  readability-*,
  -readability-avoid-unconditional-preprocessor-if,
  -readability-convert-member-functions-to-static,
  -readability-function-cognitive-complexity,
  -readability-isolate-declaration,
  -readability-magic-numbers,
  -readability-identifier-length,
  -zircon-*

WarningsAsErrors: ''
HeaderFilterRegex: ''
FormatStyle:     none

CheckOptions:
  - key:             bugprone-exception-escape.CheckCapsOnly
    value:           '1'
  - key:             cppcoreguidelines-macro-usage.CheckCapsOnly
    value:           '1'
  - key:             cppcoreguidelines-owning-memory.LegacyResourceConsumers
    value:           '::free;::realloc;::freopen;::fclose;Gtk::manage'
  - key:             misc-assert-side-effect.AssertMacros
    value:           assert,DBG_ASSERT
  - key:             misc-assert-side-effect.CheckFunctionCalls
    value:           '0'
  - key:             misc-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic
    value:          '1'
  - key:             misc-include-cleaner.IgnoreHeaders
    value:          'libdebug/*;local_glibmm.h;glib/*;gtk/*;gtkmm/*;glibmm/*'
  - key:             performance-unnecessary-value-param.AllowedTypes
    value:           'RefPtr;Ptr$'
  - key:             readability-braces-around-statements.ShortStatementLines
    value:           '2'
  - key:             readability-implicit-bool-conversion.AllowPointerConditions
    value:           '1'
  - key:             readability-implicit-bool-cast.AllowConditionalPointerCasts
    value:           '1'

...

