---
# Match either path separator: on Windows, headers resolved via backslash -I
# paths are reported as ...\src\..., which a forward-slash-only regex misses.
HeaderFilterRegex: 'src[/\\].*'
# Exclude src/contrib and CMake autogen output (AUTOUIC/AUTOMOC/AUTORCC headers
# under build/). Note: HeaderFilterRegex uses POSIX ERE (no lookahead), so the
# contrib exclusion must live here rather than as a negative lookahead above.
ExcludeHeaderFilterRegex: 'src[/\\]contrib[/\\].*|.*_autogen[/\\].*'
# TODO: Reevaluate -modernize-use-nodiscard.
# TODO: Re-enable {cppcoreguidelines,misc}-non-private-member-variables-in-classes.
# clang-analyzer-core.StackAddressEscape: cpp-httplib stores handlers by value, but the analyzer
# reports a false escape inside the library header, where it cannot be suppressed in-source.
Checks: >
  *,
  -abseil-*,
  -altera-*,
  -android-*,
  -bugprone-easily-swappable-parameters,
  -clang-analyzer-core.StackAddressEscape,
  -concurrency-mt-unsafe,
  -cppcoreguidelines-avoid-magic-numbers,
  -cppcoreguidelines-non-private-member-variables-in-classes,
  -cppcoreguidelines-owning-memory,
  -cppcoreguidelines-prefer-member-initializer,
  -cppcoreguidelines-pro-type-static-cast-downcast,
  -fuchsia-*,
  -google-*,
  google-build-using-namespace,
  -linuxkernel-*,
  -llvm-header-guard,
  -llvm-prefer-static-over-anonymous-namespace,
  -llvmlibc-*,
  -misc-include-cleaner,
  -misc-non-private-member-variables-in-classes,
  -modernize-use-nodiscard,
  -modernize-use-trailing-return-type,
  -performance-enum-size,
  -readability-function-cognitive-complexity,
  -readability-identifier-length,
  -readability-magic-numbers,
CheckOptions:
  cppcoreguidelines-pro-bounds-avoid-unchecked-container-access.ExcludeClasses: >-
    ::std::array;::std::span;
    ::std::map;::std::unordered_map;::std::flat_map;
    ::QJsonObject;::QMap;::QHash;::QMultiMap;::QMultiHash;
    ::QVariantMap;::QVariantHash
