Files
fn_registry/dev/issues/0057-audit-go-symbol-naming.md
T

3.2 KiB

id, title, status, type, domain, scope, priority, depends, blocks, related, created, updated, tags
id title status type domain scope priority depends blocks related created updated tags
0057 audit_uses_functions: mejorar deteccion de simbolos Go con abreviaturas pendiente chore
registry-quality
registry-only baja
2026-05-17 2026-05-17

0057 — audit_uses_functions: mejorar deteccion de simbolos Go con abreviaturas

APP Metadata

Campo Valor
ID 0057
Estado pendiente
Prioridad baja
Tipo enhancement — functions/infra/audit_uses_functions.go

Dependencias

  • audit_uses_functions_go_infra ya existe.

Contexto

La heuristica Go convierte name snake_case a CamelCase para buscar el simbolo exportado en el codigo. La conversion usa commonAbbrevs para mapear (ej. cdpCDP, httpHTTP). Pero falla cuando:

  1. La abreviatura no esta en la lista (ej. cdp_get_htmlCdpGetHTML pero codigo usa nombre distinto).
  2. El simbolo se renombra en la funcion del registry vs el name del frontmatter.

Caso real (2026-05-07): cdp_get_html_go_browser fue marcado unused_in_app_md en script_navegador aunque runner.go:126 lo invoca. Se confirmo manualmente como falso positivo.

Objetivo

Reducir falsos positivos en la deteccion de simbolos Go. Dos vias:

  1. Ampliar commonAbbrevs con mas terminos comunes en el registry (HTML, CDP, JWT, OAuth, JSON, YAML, SQL, BQ, ID, URL, IP, TCP, TLS, SSH, S3, RBAC).
  2. Caer a una segunda heuristica: si no encuentra <CamelCaseName>, buscar el nombre real exportado leyendo el .go de la funcion del registry y extraer func <Name>(.

Arquitectura

Archivos afectados

  • functions/infra/audit_uses_functions.go — funcion snakeToCamel o equivalente, y bucle de busqueda de simbolos.
  • functions/infra/audit_uses_functions_test.go — anadir tests.

Tareas

Fase 1 — ampliar commonAbbrevs

1.1 Listar funciones del registry con abreviaturas en su name: sqlite3 registry.db "SELECT name FROM functions WHERE lang='go';" — extraer abreviaturas comunes. 1.2 Anadir HTML, CDP, JWT, OAuth, JSON, YAML, SQL, BQ, ID, URL, IP, TCP, TLS, SSH, S3, RBAC a commonAbbrevs. 1.3 Test TestSnakeToCamel_HandlesAbbreviations con todos los nuevos.

Fase 2 — fallback a lectura de .go

2.1 Si la conversion CamelCase no encuentra simbolo, leer <file_path>.go de la funcion del registry, extraer primer func <Name>( exportado. 2.2 Buscar ese nombre en el codigo de la app. 2.3 Cachear el mapping (en memoria por ejecucion) para no reabrir el mismo archivo N veces.

Fase 3 — verificacion

3.1 cdp_get_html_go_browser ya NO debe aparecer unused para script_navegador. 3.2 Correr audit en todas las apps Go, comparar con baseline anterior. Diff de falsos positivos eliminados.

Riesgos

  • Lectura de N archivos .go ralentiza el audit. Mitigacion: cache + leer solo si la heuristica primaria falla.
  • Cambio en commonAbbrevs puede romper tests existentes que asumian la conversion antigua. Validar.

Decisiones de diseno

  • NO usar go/parser — no necesitamos AST completo, basta regex sobre func [A-Z]\w+(.
  • Tampoco cambiar el modelo de "cada funcion del registry tiene un simbolo exportado". Si en el futuro una funcion expone un struct con metodos, anadir manejo.