# clang-tidy for the native C++ renderer.

Checks: >
  -*,
  bugprone-*,
  performance-*,
  portability-*,
  modernize-*,
  clang-analyzer-*,
  misc-*,
  -bugprone-easily-swappable-parameters,
  -modernize-use-trailing-return-type,
  -modernize-avoid-c-arrays,
  -modernize-use-nodiscard,
  -modernize-use-designated-initializers,
  -modernize-use-std-print,
  -modernize-use-std-format,
  -portability-avoid-pragma-once,
  -misc-non-private-member-variables-in-classes,
  -misc-no-recursion,
  -misc-include-cleaner,
  readability-identifier-naming

# Only diagnose our own headers, never Embree/pybind11/system headers.
HeaderFilterRegex: 'native/(src|test)/.*\.(hpp|h)$'

# Advisory locally and in CI; flip on per-invocation with --warnings-as-errors.
WarningsAsErrors: ''

# `clang-tidy --fix` reformats touched ranges with our .clang-format.
FormatStyle: file

CheckOptions:
  - key:             readability-identifier-naming.ClassCase
    value:           CamelCase
  - key:             readability-identifier-naming.ClassMemberCase
    value:           lower_case
  - key:             readability-identifier-naming.ConstexprVariableCase
    value:           CamelCase
  - key:             readability-identifier-naming.ConstexprVariablePrefix
    value:           k
  - key:             readability-identifier-naming.EnumCase
    value:           CamelCase
  - key:             readability-identifier-naming.EnumConstantCase
    value:           CamelCase
  - key:             readability-identifier-naming.EnumConstantPrefix
    value:           k
  - key:             readability-identifier-naming.FunctionCase
    value:           CamelCase
  - key:             readability-identifier-naming.GlobalConstantCase
    value:           CamelCase
  - key:             readability-identifier-naming.GlobalConstantPrefix
    value:           k
  - key:             readability-identifier-naming.StaticConstantCase
    value:           CamelCase
  - key:             readability-identifier-naming.StaticConstantPrefix
    value:           k
  - key:             readability-identifier-naming.StaticVariableCase
    value:           lower_case
  - key:             readability-identifier-naming.MacroDefinitionCase
    value:           UPPER_CASE
  - key:             readability-identifier-naming.MacroDefinitionIgnoredRegexp
    value:           '^[A-Z]+(_[A-Z]+)*_$'
  - key:             readability-identifier-naming.PrivateMemberCase
    value:           lower_case
  - key:             readability-identifier-naming.ProtectedMemberCase
    value:           lower_case
  - key:             readability-identifier-naming.PublicMemberCase
    value:           lower_case
  - key:             readability-identifier-naming.PrivateMemberSuffix
    value:           _
  - key:             readability-identifier-naming.ProtectedMemberSuffix
    value:           _
  - key:             readability-identifier-naming.PublicMemberSuffix
    value:           ''
  - key:             readability-identifier-naming.NamespaceCase
    value:           lower_case
  - key:             readability-identifier-naming.ParameterCase
    value:           lower_case
  - key:             readability-identifier-naming.TypeAliasCase
    value:           CamelCase
  - key:             readability-identifier-naming.TypedefCase
    value:           CamelCase
  - key:             readability-identifier-naming.VariableCase
    value:           lower_case
  - key:             readability-identifier-naming.IgnoreMainLikeFunctions
    value:           1
