Validatore di messaggi Conventional Commits
Questo validatore di messaggi Conventional Commits controlla che l’intestazione di un commit segua la struttura consueta con tipo, ambito facoltativo e descrizione, quindi restituisce queste parti come dati strutturati stabili.
Esegui gratis nel browser
Riconosce i tipi comuni relativi a build, manutenzione, CI, documentazione, funzionalità, correzioni, prestazioni, refactoring, ripristini, stile e test. Lo usi per individuare intestazioni non valide o tipi sconosciuti prima che entrino nella cronologia condivisa, nel flusso di rilascio o in un changelog automatico. Il risultato compatto è subito utilizzabile dagli script senza ulteriore analisi testuale.
Controlli l’intestazione ed estragga i campi utili
Invii il messaggio di commit completo nel campo di testo. Il validatore normalizza le terminazioni di riga ed esamina la prima riga come intestazione Conventional Commits; il messaggio può quindi mantenere sotto una riga vuota, paragrafi del corpo e piè di pagina. Un’intestazione valida inizia con un tipo riconosciuto in minuscolo. Può proseguire con un ambito tra parentesi, aggiungere un punto esclamativo per segnalare una modifica incompatibile e deve poi contenere due punti, esattamente uno spazio separatore e una descrizione non vuota. Per esempio, <code>feat(parser): support escaped delimiters</code> restituisce il tipo <code>feat</code>, l’ambito <code>parser</code> e la descrizione <code>support escaped delimiters</code>. Il risultato normale include inoltre <code>valid: true</code> e un campo booleano di incompatibilità. Se manca l’ambito, la proprietà viene omessa anziché riempita con un valore vuoto o nullo fuorviante. Errori di sintassi e tipi sconosciuti generano un errore di input non valido con una spiegazione diretta, così un hook dell’editor o una pipeline può suggerire una correzione utile senza interpretare un risultato analizzato solo in parte.
Comprenda la convenzione riconosciuta
Conventional Commits definisce la forma dell’intestazione, lasciando ai progetti la possibilità di stabilire il proprio vocabolario di tipi. Questa capacità usa deliberatamente un insieme fisso e pratico per fornire risultati prevedibili tra repository: build, chore, ci, docs, feat, fix, perf, refactor, revert, style e test. Un’intestazione formalmente corretta con un’altra parola non viene accettata, perché ammettere qualsiasi termine annullerebbe la validazione del tipo richiesta. I tipi devono essere minuscoli. Gli ambiti sono facoltativi e possono contenere lettere minuscole, cifre, punti, trattini bassi, barre o trattini; devono iniziare con una lettera o una cifra. Sono quindi utilizzabili ambiti comuni come <code>api</code>, <code>web-client</code> e <code>packages/core</code>, mentre vengono respinti spazi ambigui e parentesi non abbinate. La descrizione conserva punteggiatura e maiuscole originali, ma non può iniziare o terminare con spazi. Un punto esclamativo immediatamente prima dei due punti indica una modifica incompatibile e viene restituito separatamente. Un piè di pagina <code>BREAKING CHANGE</code> può restare nel corpo, ma il valore booleano attuale deriva solo dal marcatore nell’intestazione e non interpreta la semantica del piè di pagina.
Inserisca una validazione deterministica nello sviluppo
Usi il validatore non appena è disponibile un messaggio proposto: in un hook dell’editor dei commit, in un controllo della pull request, in una coda di merge o in un servizio che prepara i metadati di rilascio. Un hook locale offre il riscontro più rapido, mentre la validazione sul server garantisce che i commit creati dall’automazione o da client alternativi rispettino la stessa politica. L’analizzatore è deterministico ed esegue una scansione limitata della stringa. Non contatta un host di repository, non ispeziona oggetti Git, non deduce l’intento da un diff, non riscrive la descrizione fornita e non usa servizi esterni. Lo stesso input genera pertanto gli stessi campi o lo stesso errore nel browser e tramite API. Consideri tipo, ambito e descrizione restituiti come dati di classificazione per raggruppare changelog, applicare regole di rilascio o alimentare dashboard, ma mantenga separati i controlli semantici specifici del progetto. Il validatore può confermare che <code>fix(auth): reject expired tokens</code> è strutturalmente valido, ma non può provare che la modifica corregga un errore o che <code>auth</code> sia un pacchetto consentito. Lo combini con la politica del repository se servono elenchi di ambiti o riferimenti ai ticket più rigorosi.
Casi d'uso
Protegga un hook commit-msg
Respinga subito le intestazioni non valide e mostri agli autori l’esatta struttura Conventional Commits richiesta dal repository.
Convalidi l’automazione dei merge
Controlli i messaggi creati da squash, code di merge o strumenti di rilascio prima che entrino nella cronologia permanente.
Classifichi gli input di rilascio
Estragga tipo, ambito, descrizione e incompatibilità stabili per raggruppare changelog o prendere decisioni di rilascio.
Domande frequenti
Quanto costa una validazione?
Ogni richiesta API costa $0.002. Può anche eseguire la versione per browser direttamente in questa pagina.
Quali tipi di commit vengono riconosciuti?
I tipi riconosciuti sono build, chore, ci, docs, feat, fix, perf, refactor, revert, style e test.
L’ambito è obbligatorio?
No. Sia feat: add export sia feat(api): add export sono validi. Se assente, l’ambito viene omesso dal risultato.
Il messaggio può includere corpo e piè di pagina?
Sì. La prima riga viene validata come intestazione; le righe successive restano nell’input, ma non vengono analizzate come campi di output.
Un punto esclamativo segnala una modifica incompatibile?
Sì. Se precede immediatamente i due punti, imposta l’incompatibilità su vero. Le dichiarazioni presenti solo nel piè di pagina non vengono interpretate.
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/commit-message-lint \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"feat(parser): support escaped delimiters"}'const res = await fetch("https://api.kit.forhosting.com/dev2/commit-message-lint", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "feat(parser): support escaped delimiters"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev2/commit-message-lint",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "feat(parser): support escaped delimiters"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev2/commit-message-lint", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"feat(parser): support escaped delimiters"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"feat(parser): support escaped delimiters"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev2/commit-message-lint", 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": "feat(parser): support escaped delimiters"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.commit_message_lint",
"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.
Limiti
max_chars | 100000 |
max_header_chars | 1000 |
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. |