Compter les lignes de code, commentaires et lignes vides
Mesurez la part de vrai code dans un fichier : la fonction d’exemple donne 6 lignes, dont 4 de code, 1 de commentaire et 1 vide, d’après les règles de commentaire du langage que vous choisissez. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Langue
- Javascript
- Total de lignes
- 6
- Lignes vides
- 1
- Lignes de commentaire
- 1
- Lignes de code
- 4
Mesurez un extrait ou un fichier source complet avec les règles de commentaire de son langage. Le compteur classe chaque ligne physique dans une seule catégorie — vide, commentaire ou code — et fournit aussi le total. Il reconnaît les commentaires de ligne et de bloc, ignore leurs marqueurs dans les chaînes entre guillemets et classe comme code toute ligne mêlant code et commentaire. Vous obtenez ainsi un résultat reproductible pour vos rapports, revues, migrations et automatisations.
Choisissez le langage et préservez le texte source
Envoyez le code tel quel et sélectionnez son langage dans la liste proposée. Ce choix est essentiel, car les mêmes caractères changent de sens selon l’écosystème : le dièse ouvre un commentaire en Python et en shell, deux barres en JavaScript et Java, deux tirets en SQL, tandis que HTML emploie une paire de marqueurs. Le compteur applique la table choisie sans deviner à partir du nom du fichier.
LF, CRLF et le retour chariot séparent les lignes. Une terminaison finale crée une ligne physique vide, et une chaîne vide représente également une ligne vide. Ne supprimez donc ni commentaires ni espaces si vous souhaitez les mesurer.
Un langage absent de la liste provoque une erreur d’entrée plutôt qu’un calcul générique trompeur.
Comprenez le classement de chaque ligne
Chaque ligne physique appartient une seule fois à une catégorie exclusive. Une ligne ne contenant que des espaces ou tabulations est vide, sauf dans un commentaire de bloc ouvert. Une ligne contenant uniquement un commentaire est commentée.
Dès qu’un élément de code est présent, elle est codée, même avec un commentaire final ou intégré. Les trois catégories totalisent donc toujours le nombre global. Un bloc reste actif jusqu’à son marqueur de fermeture ; du code placé avant son ouverture ou après sa fermeture rend la ligne codée.
L’analyse suit les guillemets simples, doubles, inversés et les échappements. Une URL avec deux barres ou une chaîne contenant un dièse reste ainsi du code. Le résultat porte sur les lignes physiques, pas sur les instructions : plusieurs instructions sur une ligne ne valent qu’une ligne codée.
Employez les totaux avec une méthode constante
La réponse indique le langage normalisé, puis les lignes totales, vides, commentées et codées. Vérifiez-la en additionnant les trois catégories et en comparant leur somme au total. Les lignes de code donnent une indication grossière du volume, les commentaires un contexte documentaire et les lignes vides un contexte de mise en forme ; aucune ne mesure directement la productivité ou la qualité.
Les fichiers générés, dépendances, tests et styles compacts influencent fortement les chiffres. Pour un dépôt, définissez d’abord le périmètre, traitez chaque fichier avec le bon langage et documentez votre agrégation. Le compteur ne parcourt aucun fichier, n’infère aucune extension et n’utilise ni réseau, ni horloge, ni hasard.
Cas d’usage
Préparer l’inventaire d’un dépôt
Classez les fichiers sources et regroupez des totaux cohérents de code, commentaires et lignes vides.
Estimer l’ampleur d’une migration
Comparez le volume physique de composants choisis avant un changement de langage ou de framework.
Suivre le code généré
Enregistrez des catégories déterministes et repérez les variations inattendues du code ou des commentaires.
Questions fréquentes
Combien coûte un comptage ?
L’expérience du navigateur exécute localement la même logique déterministe.
Une ligne de code avec commentaire compte-t-elle deux fois ?
Non. Elle compte une fois comme code, ce qui maintient les catégories mutuellement exclusives.
Les marqueurs dans une chaîne ouvrent-ils un commentaire ?
Non. Dans les chaînes reconnues entre guillemets, ils restent des éléments de code.
Comment les commentaires de bloc multilignes sont-ils comptés ?
Une ligne appartenant seulement au bloc est commentée ; si elle contient aussi du code, elle est codée.
Le langage de programmation est-il détecté automatiquement ?
Non. Vous choisissez le langage dans la liste et ses règles de commentaire s’appliquent. Rien n’est deviné d’après le nom du fichier ou son contenu : le même texte donne toujours le même comptage et un extrait ambigu n’est pas jugé avec de mauvaises règles.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre 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)Exemple de requête
{
"text": "function add(a, b) {\n // Return the sum\n return a + b;\n}\n",
"language": "javascript"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.count_lines_of_code",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Employez les totaux avec une méthode constante
Il examine seulement le texte fourni : des entrées identiques produisent le même JSON.
Questions techniques
Que se passe-t-il si le langage est inconnu ?
La capacité renvoie une erreur invalid_input signalant le langage non reconnu, sans deviner ses règles.