Controllo di indentazione e sintassi YAML con numeri di riga
Individui gli errori di struttura che rompono un file YAML: nell’esempio, port ripetuto alla riga 4 dopo la riga 3 e una tabulazione alla riga 5 danno 2 rilievi, ognuno con la sua riga e una spiegazione chiara. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Testo
- service: name: api port: 8080 port: 9090 debug: true
- Numero di errori
- 2
Questo controllo di indentazione e sintassi YAML individua i piccoli errori strutturali che rendono inaffidabili i file di configurazione: tabulazioni nascoste negli spazi iniziali, variazioni inattese della profondità e chiavi ripetute nella stessa mappa. Ogni rilievo include la riga sorgente, così Lei può raggiungere subito l’impostazione errata. Il controllo rifiuta anche il testo che non può essere interpretato come YAML, separando un input malformato da un documento valido che contiene soltanto segnalazioni di lint.
Legga un rapporto mirato invece di inseguire messaggi del parser
Incolli l’intero documento YAML nel campo di testo e avvii il controllo. Il risultato indica se il documento è valido, conta i rilievi ed elenca ogni problema con numero di riga a partire da uno, tipo stabile e spiegazione. Il formato compatto è utile sia a chi esamina un file di distribuzione sia a uno script che verifica configurazioni generate.
Il controllo considera tre rischi frequenti: tabulazioni negli spazi iniziali, visualizzate con larghezze diverse dagli editor; variazioni di indentazione incompatibili con la struttura dei nodi superiori; e chiavi ripetute nel medesimo ambito. La stessa grafia può invece comparire in oggetti separati. Commenti e righe vuote non alterano i riferimenti.
Una risposta senza problemi contiene un array di errori vuoto, non valori segnaposto, e può quindi fungere da esito positivo in una build o in un flusso precedente al commit.
Distingua i rilievi di lint da un input non valido
Un rilievo di lint descrive testo ancora analizzabile, sebbene la struttura sia rischiosa. Una tabulazione nell’indentazione o una chiave duplicata produce un risultato normale con la riga pertinente. Un errore di parsing è diverso: il documento è troppo incompleto o malformato per continuare un’analisi affidabile.
Virgolette non chiuse, delimitatori senza corrispondenza, chiavi vuote o una riga semplice dove serve una mappa o sequenza generano un errore di input non valido. Separare gli esiti aiuta l’automazione: l’integrazione può mostrare insieme tutti i rilievi recuperabili, mentre un errore può fermare la pipeline e richiedere la riparazione della sorgente. Il controllo è deterministico e non riscrive il documento, non sceglie un valore duplicato e non indovina l’annidamento desiderato.
Nelle configurazioni, modificare silenziosamente il significato è spesso peggio che rifiutare il file. Corregga prima l’errore di parsing iniziale, esegua nuovamente il controllo e affronti poi i rilievi numerati rimasti.
Usi il controllo in sicurezza negli editor e nelle pipeline
Invii il testo sorgente esatto invece di un oggetto già analizzato, perché molti parser eliminano indentazione e chiavi duplicate durante la conversione in dati ordinari. Mantenga terminatori di riga e commenti affinché le posizioni coincidano con l’editor. Una pipeline può controllare dopo l’applicazione dei template ma prima dell’inserimento dei segreti, fallendo quando valid è false o arriva un errore di input non valido.
A parità di testo la risposta è stabile: non usa rete, casualità, orologio o stato dell’ambiente. Limiti su input e righe evitano elaborazioni illimitate. Quando conta la correttezza semantica, lo abbini al validatore specifico del sistema di destinazione.
Casi d'uso
Controllare una configurazione di distribuzione
Rilevi annidamenti spostati, tabulazioni e impostazioni ripetute prima che lo strumento interpreti il file.
Convalidare YAML generato
Esamini l’output dei template nella build e ottenga righe utili quando la generazione crea una struttura malformata.
Esaminare modifiche di configurazione
Aggiunga un rapido controllo strutturale alla revisione del codice, evitando che errori di spaziatura si nascondano in diff estesi.
Domande frequenti
Quanto costa un controllo?
La versione per browser è utilizzabile direttamente in questa pagina.
Il controllo modifica il mio YAML?
No. Segnala soltanto i rilievi e non riscrive mai l’indentazione, elimina chiavi o sceglie valori duplicati.
Le chiavi duplicate sono consentite in oggetti diversi?
Sì. Una chiave viene segnalata solo se si ripete nello stesso ambito di mappatura.
Perché le tabulazioni vengono segnalate se il file sembra allineato?
Gli editor possono mostrarle con larghezze diverse, cambiando l’annidamento apparente tra strumenti.
Che differenza c’è tra un rilievo e un file rifiutato?
Un rilievo, come una tabulazione o una chiave ripetuta, riceve comunque un rapporto normale con la sua riga. Un testo troppo rovinato per essere analizzato, come una virgoletta non chiusa o una chiave vuota, viene rifiutato: lo corregga prima e ripeta il controllo.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/dev2/yaml-lint-basic \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"service:\n name: api\n ports:\n - 8080\n - 8081"}'const res = await fetch("https://api.kit.forhosting.com/dev2/yaml-lint-basic", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "service:\n name: api\n ports:\n - 8080\n - 8081"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev2/yaml-lint-basic",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "service:\n name: api\n ports:\n - 8080\n - 8081"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev2/yaml-lint-basic", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"service:\\n name: api\\n ports:\\n - 8080\\n - 8081"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"service:\n name: api\n ports:\n - 8080\n - 8081"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev2/yaml-lint-basic", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"text": "service:\n name: api\n ports:\n - 8080\n - 8081"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.yaml_lint_basic",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Usi il controllo in sicurezza negli editor e nelle pipeline
L’endpoint serve per verifiche rapide prima che YAML raggiunga uno strumento di distribuzione, un sistema di pubblicazione, un job di integrazione continua o l’avvio dell’applicazione. È un lint strutturale di base, non un validatore di schema: non conosce campi Kubernetes, proprietà di workflow o opzioni applicative ammesse.
Domande tecniche
È un validatore di schema Kubernetes o di workflow?
No. Controlla struttura generale e sintassi YAML di base, non campi, tipi o regole specifici del prodotto.