Comprobación previa de YAML entre entornos
Pega un documento YAML (workflow de GitHub Actions, archivo Docker Compose, manifiesto Kubernetes o YAML genérico) para descubrir qué características estructurales y valores ambiguos pueden comportarse de manera distinta según la herramienta que lo lea. Esta herramienta amplía el Analizador de diferencias semánticas de YAML: reutiliza su detección de ambigüedades escalares YAML 1.1/1.2 (el «problema de Noruega» y casos relacionados) y añade comprobaciones estructurales relevantes para consumidores YAML reales: anclajes/alias, claves de combinación, tabuladores, claves duplicadas y uso de estilo flow.
El análisis se realiza localmente en tu navegador. El archivo nunca se carga al servidor.
Cómo usar esta herramienta
- Pega tu YAML o carga un archivo .yaml/.yml; los datos no salen de tu navegador.
- Selecciona «Analizar YAML».
- Revisa cada problema señalado: qué entornos o herramientas afecta y por qué.
- Aplica la reescritura portable sugerida (tabuladores convertidos en espacios, escalares ambiguos entrecomillados) cuando se ofrezca. Algunos problemas (anclajes, claves de combinación, claves duplicadas) solo se señalan: no se pueden corregir automáticamente sin arriesgar un cambio estructural que no solicitaste.
Supuestos
- La detección de ambigüedades escalares (regla 1) usa la misma lógica que el Analizador de diferencias semánticas de YAML: compara YAML 1.1 con el Core Schema de YAML 1.2, reutilizada directamente. Aquí se presenta por su relevancia para entornos concretos, como `flag: on` en una matriz de GitHub Actions.
- Las comprobaciones estructurales (anclajes/alias, claves de combinación, tabuladores, claves duplicadas y estilo flow) son comprobaciones basadas en patrones/indentación sobre el mismo alcance limitado de asignaciones de bloque que el analizador semántico; no es un analizador YAML completo.
- Los entornos «afectados» reflejan restricciones reales ampliamente documentadas (por ejemplo, la eliminación de claves de combinación en Kubernetes y las restricciones de alias de kubectl), no una auditoría exhaustiva de todas las versiones de cada herramienta.
Fuentes y datos de referencia
Metodología
El documento se analiza en dos niveles. Primero, cada escalar plain se resuelve según las reglas de YAML 1.1 y el Core Schema de YAML 1.2 (la misma lógica que el Analizador de diferencias semánticas de YAML); las discrepancias se señalan y explican según su relevancia para entornos concretos. Después se buscan características estructurales que varían entre consumidores YAML reales: uso de anclajes/alias (advertencia: algunas herramientas los restringen o desactivan para prevenir agotamiento de recursos por expansión recursiva), claves de combinación (error: extensión de YAML 1.1 ajena a la especificación YAML 1.2, no compatible con Kubernetes y muchos analizadores estrictos), indentación con tabuladores (error: prohibida por la propia especificación YAML), claves duplicadas en una asignación (advertencia: la especificación no define su comportamiento y la mayoría de los analizadores conserva silenciosamente la última) y colecciones de estilo flow dentro de un documento de bloques (informativo: indicio de baja confianza, no un problema real).
Ejemplo resuelto
Valor de matriz de GitHub Actions con apariencia de indicador
Datos de entrada: flag: on
Resultado: Reutiliza la detección del problema de Noruega de la herramienta semántica: YAML 1.1 interpreta "on" como booleano true y YAML 1.2 como la cadena "on". En una matriz o valor env de GitHub Actions, probablemente debería seguir siendo una cadena.
Clave de combinación de Docker Compose
Datos de entrada: <<: *defaults
Resultado: Se señala como error: las claves de combinación son una extensión de YAML 1.1, no forman parte de la especificación YAML 1.2 y no son compatibles con el procesamiento YAML de Kubernetes ni con varios analizadores estrictos. No se ofrece una reescritura automática; si necesitas una versión portable, resuelve manualmente el contenido del anclaje referenciado.
Manifiesto Kubernetes indentado con tabuladores
Datos de entrada: \tname: demo
Resultado: Se señala como error (los tabuladores están prohibidos por la especificación YAML, no solo desaconsejados) y se sugiere convertir cada tabulador inicial en dos espacios.
Orientación práctica
- Considera las claves de combinación y la indentación con tabuladores como correcciones obligatorias: la especificación las prohíbe o las herramientas que probablemente uses (Kubernetes, analizadores estrictos) las declaran incompatibles.
- Revisa los anclajes/alias si el documento puede pasar por kubectl o un cargador YAML sensible a la seguridad, ya que algunos limitan la expansión de alias para impedir agotamiento de recursos al estilo de una bomba YAML.
- Vuelve a revisar cada valor señalado por la regla de ambigüedad escalar reutilizada (regla 1), igual que en el Analizador de diferencias semánticas de YAML; entrecomíllalo si debe seguir siendo una cadena.
Errores comunes
- Suponer que una clave de combinación que funciona en Docker Compose también funcionará en un manifiesto Kubernetes. Kubernetes eliminó la compatibilidad con claves de combinación hace años.
- Copiar un bloque y olvidar quitar o renombrar la clave original, creando una clave duplicada silenciosa que la mayoría de los analizadores resuelve conservando la última.
- Mezclar tabuladores y espacios en el mismo archivo tras copiar desde una fuente indentada con tabuladores. Algunos analizadores lo toleran, la mayoría no, y ambas formas pueden parecer idénticas en el editor.
Preguntas frecuentes
¿Por qué esta herramienta se solapa con el Analizador de diferencias semánticas de YAML?
No duplica la lógica, la reutiliza. La regla 1 llama directamente a la lógica de resolución escalar de aquella herramienta en vez de volver a resolver lo mismo, y añade comprobaciones estructurales (anclajes, claves de combinación, tabuladores, claves duplicadas y estilo flow) que el analizador semántico deja deliberadamente fuera de alcance.
¿Por qué las claves de combinación son un error y los anclajes/alias solo una advertencia?
Las claves de combinación quedan completamente fuera de la especificación YAML 1.2 y herramientas como el procesamiento YAML de Kubernetes las declaran expresamente incompatibles; es muy probable que fallen. Los anclajes/alias son parte del núcleo YAML, válidos y ampliamente compatibles, aunque algunas herramientas los restringen por seguridad. Es un riesgo real, pero menos seguro.
¿Por qué la herramienta no corrige automáticamente anclajes, claves de combinación ni claves duplicadas?
Cada caso exige entender el significado del documento (el contenido expandido de un anclaje o cuál de las apariciones duplicadas se pretendía usar), no una modificación mecánica del texto. La herramienta los señala y explica la corrección manual en vez de adivinar.
Última revisión:
Estas son comprobaciones estructurales limitadas basadas en patrones más una comparación reutilizada de ambigüedad escalar; no es un analizador YAML completo ni valida el comportamiento exacto de una herramienta específica. Los valores internos de colecciones de estilo flow no se examinan por ambigüedades escalares (igual que en el alcance documentado del analizador semántico), y la detección de claves duplicadas sigue niveles de asignación según la indentación en vez de construir el árbol completo del documento.
Las preferencias de tema y de herramientas, junto con las listas de herramientas guardadas y recientes, se almacenan solo en este navegador.