Contare righe di codice, commenti e righe vuote
Scopra quanta parte di un file è vero codice: la funzione di esempio dà 6 righe, di cui 4 di codice, 1 di commento e 1 vuota, secondo le regole di commento del linguaggio che sceglie. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Lingua
- Javascript
- Totale righe
- 6
- Righe vuote
- 1
- Righe di commento
- 1
- Righe di codice
- 4
Misuri un frammento o un file sorgente completo con le regole dei commenti del linguaggio scelto. Il contatore assegna ogni riga fisica a una sola categoria — vuota, commento o codice — e restituisce anche il totale. Riconosce i comuni commenti di riga e blocco, ignora i marcatori nelle stringhe tra virgolette e considera codice una riga che contiene sia codice sia commenti. Il risultato è ripetibile e adatto a report, revisioni, migrazioni e automazioni.
Scelga il linguaggio e conservi il testo sorgente
Invii il codice esattamente com’è e selezioni il linguaggio dall’elenco supportato. La scelta conta perché gli stessi caratteri cambiano significato: il cancelletto apre commenti in Python e shell, due barre in JavaScript e Java, due trattini in SQL, mentre HTML usa marcatori accoppiati. Il contatore applica la tabella scelta senza dedurre nulla dal nome del file.
LF, CRLF e il ritorno carrello separano le righe. Una terminazione finale crea una riga fisica vuota; anche una stringa vuota rappresenta una riga vuota. Non elimini commenti né ritagli il testo se desidera misurare questi dettagli.
Un linguaggio non elencato genera un errore di input invece di applicare una regola generica potenzialmente ingannevole.
Interpreti la classificazione di ogni riga
Ogni riga fisica appartiene una sola volta a una categoria esclusiva. Una riga composta soltanto da spazi o tabulazioni è vuota, salvo quando si trova in un commento di blocco aperto. Una riga con solo commento è un commento.
Se contiene qualsiasi elemento di codice, è codice anche con un commento finale o incorporato. Le tre categorie sommano quindi sempre al totale. Un blocco resta attivo fino al marcatore di chiusura; codice prima dell’apertura o dopo la chiusura rende la riga codice.
L’analisi segue virgolette singole, doppie, accenti gravi ed escape. Perciò un URL con due barre o una stringa con cancelletto resta codice. Si contano righe fisiche, non istruzioni: più istruzioni sulla stessa riga valgono una riga di codice.
Usi i totali con criteri coerenti
La risposta riporta il linguaggio normalizzato e le righe totali, vuote, di commento e di codice. Può verificarla sommando le tre categorie e confrontandole con il totale. Consideri le righe di codice un’indicazione approssimativa del volume, i commenti un contesto documentale e le righe vuote un contesto di formattazione, non misure dirette di qualità o produttività.
File generati, dipendenze, test e stili compatti modificano molto i numeri. Per un repository, definisca prima l’ambito, elabori ogni file con il linguaggio corretto e documenti la politica di aggregazione. Il contatore non cerca file, non deduce estensioni e non usa rete, orologio o casualità.
Casi d'uso
Preparare l’inventario di un repository
Classifichi i file sorgente e aggreghi totali coerenti di codice, commenti e righe vuote.
Stimare l’ambito di una migrazione
Confronti il volume fisico dei componenti scelti prima di cambiare linguaggio o framework.
Monitorare il codice generato
Registri categorie deterministiche e segnali variazioni inattese nel volume di codice o commenti.
Domande frequenti
Quanto costa un conteggio?
L’esperienza nel browser esegue localmente la stessa logica deterministica.
Una riga con codice e commento finale conta due volte?
No. Conta una volta come codice, mantenendo tutte le categorie mutuamente esclusive.
I marcatori nelle stringhe diventano commenti?
No. I marcatori nelle stringhe riconosciute tra virgolette restano parte del codice.
Come vengono contati i commenti di blocco su più righe?
Le righe contenenti solo il blocco sono commenti; una riga che contiene anche codice è codice.
Il linguaggio di programmazione viene riconosciuto da solo?
No. Lei sceglie il linguaggio dall’elenco e si applicano le sue regole di commento. Non viene mai indovinato dal nome del file o dal contenuto, quindi lo stesso testo dà sempre lo stesso conteggio e un frammento ambiguo non viene giudicato con regole sbagliate.
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/count-lines-of-code \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"function add(a, b) {\n // Return the sum\n return a + b;\n}\n","language":"javascript"}'const res = await fetch("https://api.kit.forhosting.com/dev2/count-lines-of-code", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "function add(a, b) {\n // Return the sum\n return a + b;\n}\n",
"language": "javascript"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev2/count-lines-of-code",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "function add(a, b) {\n // Return the sum\n return a + b;\n}\n",
"language": "javascript"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev2/count-lines-of-code", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"function add(a, b) {\\n // Return the sum\\n return a + b;\\n}\\n","language":"javascript"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"function add(a, b) {\n // Return the sum\n return a + b;\n}\n","language":"javascript"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev2/count-lines-of-code", 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": "function add(a, b) {\n // Return the sum\n return a + b;\n}\n",
"language": "javascript"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.count_lines_of_code",
"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 i totali con criteri coerenti
Esamina solo il testo fornito: input identici producono lo stesso JSON.
Domande tecniche
Che cosa accade con un linguaggio sconosciuto?
La capacità restituisce un errore invalid_input per linguaggio non riconosciuto, senza inventare regole.