# Symlinked to:
# currently no symlinks

InheritParentConfig:  true

Checks: '
-cert-err58-cpp,
-cppcoreguidelines-avoid-const-or-ref-data-members,
-cppcoreguidelines-avoid-magic-numbers,
-cppcoreguidelines-avoid-non-const-global-variables,
-cppcoreguidelines-owning-memory,
-cppcoreguidelines-special-member-functions,
-hicpp-special-member-functions,
-readability-identifier-naming,
-readability-magic-numbers,
'
## Justifications for rule deactivation ##
#
# * rule: cppcoreguidelines-avoid-const-or-ref-data-members
#   justification: this is non-production code and it improves the readability of tests
#
# * rule: cert-err58-cpp
#   justification: caused by TEST_F in gtest with internal macro generated construct: test_info_
#
# * rule: cppcoreguidelines-avoid-non-const-global-variables
#   justification: same as for 'cert-err58-cpp'
#
# * rule: cppcoreguidelines-owning-memory
#   justification: caused by TEST_F in gtest with internal macro generated construct: testing::internal::TestFactoryBase *
#
# * rule: cppcoreguidelines-special-member-functions
#   justification: structs and classes in tests do not all follow the rule of five
#
# * rule: hicpp-special-member-functions
#   justification: same as for 'cppcoreguidelines-special-member-functions'
#
# * rule: readability-identifier-naming
#   justification: structs and classes in tests do not obey the same naming convention like in production code

CheckOptions:
  - { key: readability-function-size.LineThreshold,               value: 10000 }
  - { key: readability-function-size.BranchThreshold,             value: 10000 }
  - { key: readability-function-size.StatementThreshold,          value: 10000 }
  - { key: readability-function-cognitive-complexity.Threshold,   value: 10000 }

## Justifications for CheckOptions ##
#
# EXPECT_*, ASSERT_* and TEST_F, TYPED_TEST macros introduce additional
# branches and increase the code complexity without affecting the user. Therefore,
# those metrics are hardly applicable in tests.
#
# * rule: cppcoreguidelines-avoid-magic-numbers, readability-magic-numbers
#   justification: too many false positives and it enforces a less readable code style
#   example:
#     bad:
#       constexpr uint64_t STRING_CAPACITY = 100U;
#       iox::string<STRING_CAPACITY> myString; // the 100 is already part of the type name so why not allow it
#     good:
#       iox::string<100> myString; // this leads to a warning but we want it
