Skip to content

YAML lint

Validatore YAML

Scopri cosa c’è che non va nel tuo YAML — e dove.

YAML

Incolla YAML qui o trascina un file sulla pagina

JSON

JSON appare qui mentre scrivi

Gratis e illimitato · Nessuna registrazione · Ogni errore ha riga e colonna esatte, una spiegazione chiara e una correzione suggerita.

Cosa viene controllato

Sintassi

Indentazione, tab, parentesi e virgolette non chiuse, mapping e sequenze malformati.

Struttura

Chiavi duplicate, che YAML rifiuta e che in JSON collasserebbero in silenzio.

Riferimenti

Alias che puntano ad anchor inesistenti, e anchor dichiarati senza nome.

Sicurezza

Espansione incontrollata degli alias — la forma «billion laughs» — prima che possa bloccare la pagina.

Portabilità

Valori che cambiano significato tra YAML 1.1 e YAML 1.2, evidenziati con ciò che ciascuna versione produce.

Tag

Tag personalizzati come !Ref o !GetAtt che non hanno un significato standard fuori dal proprio strumento.

Uno YAML valido non è sempre uno YAML corretto

Un documento può essere analizzato perfettamente e significare comunque qualcosa che non intendevi. Il caso classico è country: no, valido in entrambe le versioni di YAML ma che produce la stringa "no" in una e il booleano false nell’altra.

Per questo il validatore segnala due cose diverse. Gli errori significano che il documento non può essere analizzato affatto. Gli avvisi significano che viene analizzato, ma un valore verrebbe letto diversamente da un altro strumento — vale la pena saperlo prima che un manifest Kubernetes raggiunga un cluster.

Se vuoi capire l’errore prima di correggerlo, la guida Errori YAML comuni e come correggerli passa in rassegna i sei sbagli dietro quasi ogni parsing fallito — tab, due punti senza virgolette, parentesi non chiuse, chiavi duplicate, anchor mancanti e indentazione irregolare — con un prima e dopo per ciascuno.

Domande frequenti

Cosa controlla questo validatore YAML?

Prima la sintassi: indentazione, tabulazioni, parentesi e virgolette non chiuse, mapping e sequenze malformati. Poi la struttura: chiavi duplicate, alias che puntano ad ancore mai dichiarate ed espansioni di alias fuori controllo. Infine la portabilità: tag personalizzati come !Ref, che non significano nulla fuori dal loro strumento, e ogni valore senza virgolette che YAML 1.1 e YAML 1.2 leggono in modo diverso. Ogni problema arriva con riga e colonna, una spiegazione in linguaggio chiaro, una correzione suggerita e un segno nell’editor.

Perché il mio YAML è valido ma si comporta male?

Perché valido non significa corretto. country: no viene analizzato senza errori in entrambe le versioni di YAML, ma è la stringa "no" in YAML 1.2 e il booleano false in YAML 1.1: è così che un paese sparisce da un elenco senza alcun errore. Lo stesso vale per 022, 12:30 e 1e3. Questo validatore li segnala come avvisi, non come errori: il documento si analizza, ma un altro strumento leggerebbe un valore in modo diverso. Metti il valore tra virgolette per eliminare l’ambiguità.

Cosa significa «mapping values are not allowed in this context»?

Il parser ha trovato due punti seguiti da uno spazio in un punto in cui stava già leggendo un valore. La causa abituale è un valore senza virgolette che contiene a sua volta i due punti, come title: Deploy: production o un URL scritto senza virgolette. Racchiudi il valore tra virgolette. L’altra causa è una chiave indentata in modo diverso dalle chiavi vicine, che il parser legge come parte del valore precedente.

Cosa significa «found character that cannot start any token»?

Quasi sempre una tabulazione usata per l’indentazione, cosa che YAML vieta. Gli editor che convertono le tabulazioni in spazi nascondono il problema finché il file non viene modificato altrove. Sostituisci la tabulazione con spazi e mantieni la stessa larghezza per tutte le chiavi sorelle; il validatore indica la riga esatta. Lo stesso messaggio compare per un carattere di controllo fuori posto o per una @ o un apice inverso all’inizio di un valore.

Cosa significa «did not find expected key»?

Il parser stava leggendo un mapping e si aspettava che la riga successiva fosse un’altra chiave con la stessa indentazione, ma ha trovato altro. Guarda la riga prima di quella segnalata: un valore indentato di uno spazio in più rispetto ai fratelli, un trattino che apre un elenco dove era attesa una chiave, o un valore che andava messo tra virgolette. Il validatore recupera la causa reale per parentesi e virgolette non chiuse, che la maggior parte dei parser segnala in modo errato sotto questo messaggio.

Valida rispetto a uno schema, come Kubernetes o OpenAPI?

No. Controlla che il documento sia YAML ben formato e che significhi la stessa cosa per ogni parser; non sa quali chiavi possa contenere un Deployment o un documento OpenAPI. Per Kubernetes, kubectl apply --dry-run=client -f file.yaml controlla un manifest rispetto allo schema del cluster. Per OpenAPI, GitHub Actions o JSON Schema, passa il file nel validatore di schema di quel formato dopo che ha superato questo controllo.

Il mio YAML viene caricato quando lo valido?

No. La validazione avviene nel tuo browser; non esiste alcun endpoint a cui inviare il documento e la pagina continua a funzionare dopo la disconnessione. I file di configurazione sono esattamente il tipo di cosa che contiene nomi host, percorsi interni e ogni tanto un segreto, ed è per questo che lo strumento è stato costruito così.

Come valido YAML dalla riga di comando?

yamllint file.yaml segnala errori di sintassi e problemi di stile ed è la scelta abituale in CI. yq . file.yaml stampa il documento o fallisce con un errore di parsing. In Python, python -c "import sys, yaml; yaml.safe_load(sys.stdin)" < file.yaml fallisce su YAML non valido, anche se PyYAML legge YAML 1.1 e quindi tratterà anche no come false. Nessuno spiega l’errore come fa il validatore qui sopra: usali per far fallire una pipeline, e questa pagina per capire perché.