---
HeaderFilterRegex: .*/libtransmission/.*

# TODO: Enable `portability-template-virtual-member-function` after https://github.com/llvm/llvm-project/issues/139031 is fixed
# TODO: Enable `cppcoreguidelines-pro-bounds-pointer-arithmetic` after converting all pointers to std::span
# TODO: Enable `modernize-use-integer-sign-comparison` (P0586R2) after GCC >= 10.1, clang >= 13
#
# PRs welcome to fix & re-enable any of these explicitly-disabled checks
#
# -readability-container-contains (P0458R2): GCC 9.1, clang 13
# Ref: https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html
# Ref: https://libcxx.llvm.org/Status/Cxx20.html
Checks:
  - bugprone-*
  - -bugprone-branch-clone
  - -bugprone-easily-swappable-parameters
  - -bugprone-implicit-widening-of-multiplication-result
  - -bugprone-narrowing-conversions
  - cert-*
  - -cert-err58-cpp
  - -cert-int09-c
  - clang-analyzer-*
  # -clang-analyzer-optin.core.EnumCastOutOfRange: disabled due false <filesystem> warning in file.cc calling
  # std::filesystem::last_write_time() on windows ci builds with MSVC STL 14.44.35207.
  # Try re-enabling when the CI runner upgrades to a newer version.
  - -clang-analyzer-optin.core.EnumCastOutOfRange
  - cppcoreguidelines-*
  - -cppcoreguidelines-avoid-c-arrays
  - -cppcoreguidelines-avoid-const-or-ref-data-members
  - -cppcoreguidelines-avoid-magic-numbers
  - -cppcoreguidelines-avoid-non-const-global-variables
  - -cppcoreguidelines-macro-usage
  - -cppcoreguidelines-narrowing-conversions
  - -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-reinterpret-cast
  - -cppcoreguidelines-pro-type-union-access
  - -cppcoreguidelines-pro-type-vararg
  - google-explicit-constructor
  - misc-*
  - -misc-include-cleaner
  - -misc-no-recursion
  - -misc-non-private-member-variables-in-classes
  - modernize-*
  - -modernize-use-integer-sign-comparison
  - -modernize-use-trailing-return-type
  - performance-*
  - -performance-move-const-arg
  - portability-*
  - -portability-template-virtual-member-function
  - readability-*
  - -readability-container-contains
  - -readability-enum-initial-value
  - -readability-function-cognitive-complexity
  - -readability-identifier-length
  - -readability-magic-numbers
  - -readability-qualified-auto

CheckOptions:
  - { key: cppcoreguidelines-avoid-do-while.IgnoreMacros,                           value: true       }
  - { key: cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreUnnamedParams,  value: true       }
  - { key: cppcoreguidelines-special-member-functions.AllowSoleDefaultDtor,         value: true       }
  - { key: readability-identifier-naming.ConstexprVariableCase,                     value: CamelCase  }
  - { key: readability-identifier-naming.ParameterCase,                             value: lower_case }
  - { key: readability-identifier-naming.PrivateMemberSuffix,                       value: _          }
  - { key: readability-identifier-naming.ProtectedMemberSuffix,                     value: _          }
  - { key: readability-identifier-naming.VariableCase,                              value: lower_case }
  - { key: readability-implicit-bool-conversion.UseUpperCaseLiteralSuffix,          value: true       }
