Contador de comentários no código
Meça quanto de um arquivo de código explica em vez de executar: um trecho de seis linhas, com três de comentário e três de código, dá proporção 1 e 50% de comentários. Marcadores entre aspas não contam. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Idioma
- Javascript
- Total de linhas
- 6
- Linhas em branco
- 1
- Linhas de comentário
- 3
- Linhas de código
- 3
O contador de linhas de comentários mede quanto de um arquivo-fonte é dedicado a explicações em vez de código executável. Cole o código, escolha a linguagem ou use a detecção automática e receba contagens de comentários, código, linhas vazias e mistas, além da proporção entre comentários e código. O resultado é um indicador compacto de densidade documental para revisões, planejamento de manutenção, painéis de qualidade e auditorias de repositórios. A varredura léxica é determinística, não confunde marcadores dentro de strings e informa em cada resposta qual linguagem foi escolhida.
Interprete a métrica sem transformá-la em meta
A densidade de comentários é útil quando inicia uma conversa, não quando vira uma nota universal. Este contador divide as linhas de comentário pelas linhas de código e também apresenta os comentários como porcentagem do conjunto observado. Uma linha com código e comentário no final pertence às duas categorias, enquanto a contagem separada de linhas mistas deixa essa sobreposição visível.
Linhas vazias não pertencem a nenhuma delas. Essas definições tornam medições repetidas comparáveis, mas não afirmam que mais comentários sempre significam software melhor. Uma pequena função de análise pode ficar clara apenas com nomes e testes, enquanto a implementação de um protocolo talvez exija notas extensas sobre invariantes e restrições externas.
Compare arquivos com funções, linguagens e maturidade semelhantes. Procure mudanças surpreendentes: explicações removidas de um subsistema complexo, cabeçalhos enganosos em código gerado ou aumento causado por código desativado dentro de comentários. Use o resultado junto com complexidade, cobertura de testes, frequência de alterações e julgamento profissional.
A métrica indica onde ler; ela não determina se um comentário é correto, necessário ou útil.
Escolha a linguagem e entenda as regras de contagem
Selecione a linguagem de origem sempre que souber qual é, pois os marcadores de comentário variam. Linguagens da família C usam barra dupla para comentários de linha e blocos entre barra e asterisco; Python e scripts de shell usam cerquilha; SQL combina hífen duplo com blocos, e HTML utiliza delimitadores de marcação. O modo automático examina padrões comuns e devolve a linguagem inferida, deixando a decisão explícita.
O analisador acompanha comentários de bloco por várias linhas e ignora supostos marcadores dentro de strings com aspas simples, duplas ou crases. Cada linha física é classificada conforme contenha código, comentário, ambos ou nenhum. Assim, um bloco multilinha adiciona uma linha de comentário para cada linha física ocupada.
Um comentário depois de uma instrução aumenta as contagens de código, comentários e linhas mistas. Essa abordagem léxica é rápida e determinística, mas não substitui um compilador completo. Strings brutas incomuns, linguagens incorporadas, truques de pré-processador e literais de documentação podem exigir seleção explícita ou analisador especializado quando a classificação semântica exata for indispensável.
Aplique o resultado em revisões e verificações de manutenção
Em uma revisão individual, execute o contador antes e depois da alteração e investigue grandes variações em vez de impor um limite fixo. Uma proporção menor em um algoritmo que ganhou complexidade pode indicar que premissas ou casos extremos precisam de explicação. Uma proporção maior pode representar boa documentação, mas também código comentado que deveria ser removido e preservado no controle de versão.
Em escala de repositório, armazene as contagens com o identificador do commit, a linguagem, o caminho e a indicação de arquivo gerado. Agregue apenas grupos comparáveis, pois configuração, testes, clientes gerados e lógica de aplicação têm necessidades documentais muito diferentes. Trate o número como evidência para priorização: combine-o com a frequência de mudanças para encontrar arquivos muito editados e pouco explicados, ou com complexidade para concentrar a revisão.
Leia sempre os comentários reais antes de concluir algo sobre manutenibilidade.
Casos de uso
Revisar mudanças na documentação
Compare a densidade antes e depois de uma alteração e investigue variações inesperadas em arquivos complexos.
Criar um painel de qualidade
Registre contagens e proporções estáveis junto com complexidade, mudanças e cobertura de testes.
Priorizar a manutenção
Encontre módulos alterados com frequência que oferecem pouco contexto explicativo.
Perguntas frequentes
O que é a proporção entre comentários e código?
É o número de linhas de comentário dividido pelo número de linhas de código, arredondado para seis casas decimais.
Como são contadas linhas com código e comentários?
Elas contam uma vez como código, uma vez como comentário e uma vez no campo separado de linhas mistas.
Linhas vazias afetam a proporção?
Não. Elas são apresentadas separadamente e não entram em nenhum termo da proporção.
O que ocorre quando há comentários, mas nenhum código?
O campo da proporção é omitido porque a divisão por zero não tem resultado finito; as contagens individuais continuam disponíveis.
A detecção automática da linguagem é exata?
Não. Ela usa regras conservadoras de padrões e informa sua escolha. Se a precisão for essencial, selecione a linguagem explicitamente.
A ferramenta avalia a qualidade dos comentários?
Não. Ela mede a densidade de linhas físicas, não se os comentários estão corretos, atuais ou úteis.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/dev/count-comments \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"// Convert a value\nfunction double(value) {\n return value * 2; // arithmetic\n}"}'const res = await fetch("https://api.kit.forhosting.com/dev/count-comments", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "// Convert a value\nfunction double(value) {\n return value * 2; // arithmetic\n}"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/count-comments",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "// Convert a value\nfunction double(value) {\n return value * 2; // arithmetic\n}"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/count-comments", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"// Convert a value\\nfunction double(value) {\\n return value * 2; // arithmetic\\n}"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"// Convert a value\nfunction double(value) {\n return value * 2; // arithmetic\n}"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/count-comments", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"text": "// Convert a value\nfunction double(value) {\n return value * 2; // arithmetic\n}"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.count_comments",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_mb | 5 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Aplique o resultado em revisões e verificações de manutenção
A saída JSON estável serve para painéis de qualidade e relatórios de integração contínua; o executor no navegador permite uma verificação rápida e privada. A automação pela API custa US$ 0,002 por solicitação.