Checks: # Estrategia: Habilitar checks uno por uno, aplicar fix, compilar, commit # ✅ Check 1: readability-uppercase-literal-suffix (1.0f → 1.0F) # ✅ Check 2: readability-math-missing-parentheses (claridad en ops matemáticas) # ✅ Check 3: readability-identifier-naming (DESHABILITADO temporalmente - cascada de cambios) # ✅ Check 4: readability-const-return-type (código ya cumple) # ✅ Check 5: readability-else-after-return (código ya cumple) # ✅ Check 6: readability-simplify-boolean-expr (código ya cumple) # ✅ Check 7: readability-* (225 fixes aplicados) - readability-* - -readability-identifier-naming # Excluido (cascada de cambios) - -readability-identifier-length # Excluido (nombres cortos son OK) - -readability-magic-numbers # Excluido (muchos falsos positivos) - -readability-convert-member-functions-to-static # Excluido (rompe encapsulación) - -readability-use-anyofallof # Excluido (C++20 ranges - no todos los compiladores) - -readability-function-cognitive-complexity # Excluido (complejidad ciclomática aceptable) - -clang-analyzer-security.insecureAPI.rand # Excluido (rand() es suficiente para juegos) # ✅ Check 8: modernize-* (215 fixes aplicados) - modernize-* - -modernize-use-trailing-return-type # Excluido (estilo controversial) - -modernize-avoid-c-arrays # Excluido (arrays C son OK en algunos contextos) # ✅ Check 9: performance-* (91 fixes aplicados) - performance-* - -performance-enum-size # Excluido (tamaño de enum no crítico) # ✅ Check 10: bugprone-* (0 fixes - todos eran falsos positivos) - bugprone-* - -bugprone-easily-swappable-parameters # Excluido (muchos falsos positivos) - -bugprone-narrowing-conversions # Excluido (conversiones intencionales) - -bugprone-integer-division # Excluido (divisiones enteras OK en contexto) - -bugprone-branch-clone # Excluido (fall-through en switch es intencional) - -bugprone-switch-missing-default-case # Excluido (no todos los switches necesitan default) - -bugprone-implicit-widening-of-multiplication-result # Excluido (valores pequeños, sin overflow) - -bugprone-exception-escape # Excluido (excepciones en main terminan el programa - OK) # ✅ Check 11: llvm-include-order (validar orden de includes - 0 errores) - llvm-include-order # ⏸️ Check 12: misc-include-cleaner (DESHABILITADO temporalmente - requiere refactorización masiva de includes) - -misc-include-cleaner WarningsAsErrors: '*' # No usar HeaderFilterRegex - usamos .clang-tidy local en source/core/audio/ para excluir FormatStyle: file CheckOptions: # Variables locales en snake_case - { key: readability-identifier-naming.VariableCase, value: lower_case } # Miembros privados en snake_case con sufijo _ - { key: readability-identifier-naming.PrivateMemberCase, value: lower_case } - { key: readability-identifier-naming.PrivateMemberSuffix, value: _ } # Miembros protegidos en snake_case con sufijo _ - { key: readability-identifier-naming.ProtectedMemberCase, value: lower_case } - { key: readability-identifier-naming.ProtectedMemberSuffix, value: _ } # Miembros públicos en snake_case (sin sufijo) - { key: readability-identifier-naming.PublicMemberCase, value: lower_case } # Namespaces en CamelCase - { key: readability-identifier-naming.NamespaceCase, value: CamelCase } # Variables estáticas privadas como miembros privados - { key: readability-identifier-naming.StaticVariableCase, value: lower_case } - { key: readability-identifier-naming.StaticVariableSuffix, value: _ } # Constantes estáticas sin sufijo - { key: readability-identifier-naming.StaticConstantCase, value: UPPER_CASE } # Constantes globales en UPPER_CASE - { key: readability-identifier-naming.GlobalConstantCase, value: UPPER_CASE } # Variables constexpr globales en UPPER_CASE - { key: readability-identifier-naming.ConstexprVariableCase, value: UPPER_CASE } # Constantes locales en UPPER_CASE - { key: readability-identifier-naming.LocalConstantCase, value: UPPER_CASE } # Constexpr miembros en UPPER_CASE (sin sufijo) - { key: readability-identifier-naming.ConstexprMemberCase, value: UPPER_CASE } # Constexpr miembros privados/protegidos con sufijo _ - { key: readability-identifier-naming.ConstexprMethodCase, value: UPPER_CASE } # Clases, structs y enums en CamelCase - { key: readability-identifier-naming.ClassCase, value: CamelCase } - { key: readability-identifier-naming.StructCase, value: CamelCase } - { key: readability-identifier-naming.EnumCase, value: CamelCase } # Valores de enums en UPPER_CASE - { key: readability-identifier-naming.EnumConstantCase, value: UPPER_CASE } # Métodos en camelBack (sin sufijos) - { key: readability-identifier-naming.MethodCase, value: camelBack } - { key: readability-identifier-naming.PrivateMethodCase, value: camelBack } - { key: readability-identifier-naming.ProtectedMethodCase, value: camelBack } - { key: readability-identifier-naming.PublicMethodCase, value: camelBack } # Funciones en camelBack - { key: readability-identifier-naming.FunctionCase, value: camelBack } # Parámetros en lower_case - { key: readability-identifier-naming.ParameterCase, value: lower_case } # misc-include-cleaner: Ignorar SDL (genera falsos positivos) - { key: misc-include-cleaner.IgnoreHeaders, value: 'SDL3/.*' }