Checks: >
  -*,
  bugprone-*,
  google-*,
  modernize-*,
  readability-*,
  cppcoreguidelines-*,
  -modernize-use-trailing-return-type,
  -google-runtime-references

CheckOptions:
  # Enforce Google Naming Conventions with valid clang-tidy strings
  - key: readability-identifier-naming.ClassCase
    value: CamelCase
  - key: readability-identifier-naming.ClassMemberCase
    value: lower_case
  - key: readability-identifier-naming.ClassMemberSuffix
    value: _
  - key: readability-identifier-naming.FunctionCase
    value: CamelCase
  - key: readability-identifier-naming.StructCase
    value: CamelCase
  - key: readability-identifier-naming.VariableCase
    value: lower_case
  - key: readability-identifier-naming.GlobalConstantCase
    value: CamelCase
  - key: readability-identifier-naming.GlobalConstantPrefix
    value: k

  # Ensure C++20 Modernization
  - key: modernize-make-unique.MakeSmartPtrFunction
    value: std::make_unique
  - key: modernize-make-shared.MakeSmartPtrFunction
    value: std::make_shared
  - key: modernize-use-override.IgnoreDestructors
    value: "false"

# Warnings as Errors to ensure compliance during build
WarningsAsErrors: "*"
