# BoxMOT native C++ — clang-tidy configuration.
#
# Lints are intentionally conservative: surface high-signal issues without
# drowning in style noise that ``.clang-format`` already handles. Run with
#
#   find boxmot/native/trackers \
#       -type f \( -name '*.cpp' -o -name '*.hpp' \) \
#       -not -path '*/cli/*' \
#       -exec clang-tidy --quiet -p build {} +
#
Checks: >
  -*,
  bugprone-*,
  cert-*,
  clang-analyzer-*,
  cppcoreguidelines-*,
  hicpp-signed-bitwise,
  misc-*,
  modernize-*,
  performance-*,
  portability-*,
  readability-*,
  -bugprone-easily-swappable-parameters,
  -bugprone-narrowing-conversions,
  -cppcoreguidelines-avoid-c-arrays,
  -cppcoreguidelines-avoid-magic-numbers,
  -cppcoreguidelines-narrowing-conversions,
  -cppcoreguidelines-non-private-member-variables-in-classes,
  -cppcoreguidelines-owning-memory,
  -cppcoreguidelines-pro-bounds-array-to-pointer-decay,
  -cppcoreguidelines-pro-bounds-pointer-arithmetic,
  -cppcoreguidelines-pro-type-reinterpret-cast,
  -cppcoreguidelines-pro-type-vararg,
  -hicpp-avoid-c-arrays,
  -hicpp-no-array-decay,
  -hicpp-vararg,
  -misc-non-private-member-variables-in-classes,
  -misc-no-recursion,
  -modernize-use-trailing-return-type,
  -readability-magic-numbers,
  -readability-identifier-length,
  -readability-function-cognitive-complexity

WarningsAsErrors: ''
HeaderFilterRegex: 'boxmot/native/trackers/(base|botsort|bytetrack|ocsort|sfsort|occluboost)/include/.*'
FormatStyle: file
CheckOptions:
  - { key: readability-implicit-bool-conversion.AllowIntegerConditions,  value: '1' }
  - { key: readability-implicit-bool-conversion.AllowPointerConditions,  value: '1' }
  - { key: modernize-use-default-member-init.UseAssignment,              value: '1' }
  - { key: modernize-use-override.IgnoreDestructors,                     value: '1' }
  - { key: cppcoreguidelines-special-member-functions.AllowSoleDefaultDtor, value: '1' }
  - { key: hicpp-special-member-functions.AllowSoleDefaultDtor,          value: '1' }
