Validador de Mensagens de Commit|Verifique Conventional Commits com 8 Regras
Cole uma mensagem de commit e verifique se ela segue o formato Conventional Commits em 8 regras. O formato do assunto, seu comprimento, o modo imperativo, a quebra de linha do corpo, os marcadores de mudança incompatível e o formato do rodapé aparecem lado a lado, marcados como aprovado, aviso ou falha.
💡 Sobre esta ferramenta
Em um repositório compartilhado, o histórico do Git logo vira uma mistura de estilos: uns começam com feat:, outros escrevem assuntos longos demais, outros esquecem a linha em branco antes do corpo. Combinar uma convenção é fácil; lembrar dela a cada commit nem tanto. Esta ferramenta transforma esse acordo em uma lista de conferência: cole a mensagem e corrija o que aparecer em vermelho.
As 8 regras são: R1 formato do assunto (type(scope): subject), R2 comprimento do assunto (50 recomendado, 72 obrigatório), R3 sem ponto final, R4 modo imperativo, R5 linha em branco entre assunto e corpo, R6 linhas do corpo com até 72 caracteres, R7 marcador de mudança incompatível (! ou BREAKING CHANGE:) e R8 formato de token no rodapé (Refs:, Closes #N). O resultado é copiado como um relatório em texto simples, que você pode colar em uma revisão de código ou no guia de estilo do time.
🧐 Perguntas frequentes
P. O que é Conventional Commits?
É uma convenção leve que adiciona um tipo como feat, fix ou docs ao início do assunto, para que as ferramentas possam gerar registros de mudanças e versões semânticas a partir do histórico. É amplamente adotada em projetos de código aberto.
P. Por que 50 e 72 caracteres?
Os 50 caracteres mantêm o assunto legível no git log e em plataformas como o GitHub; 72 é o limite antes de a linha ser cortada no terminal. A ferramenta avisa ao passar de 50 e marca falha ao passar de 72.
P. Como funciona a verificação do modo imperativo?
A regra R4 é uma heurística: ela detecta se a primeira palavra termina em -ed ou -ing (por exemplo, "Added" ou "Adding") e sugere a forma imperativa. É orientativa e exibe um aviso, não uma falha.
P. O escopo (scope) é obrigatório?
Não. feat: ... passa na regra R1 tão bem quanto feat(parser): .... O escopo entre parênteses é opcional e aceita apenas minúsculas, dígitos e hifens.
P. Como marco uma mudança incompatível?
Adicione um ! após o tipo (feat!:) ou uma linha BREAKING CHANGE: no corpo. Basta um dos dois: a regra R7 aceita ! sozinho, BREAKING CHANGE: sozinho ou ambos, e informa qual forma de marcador foi usada.
📚 Convenção como contrato de equipe
Na comunidade brasileira de desenvolvimento, onde times remotos colaboram em fusos diferentes, um histórico de commits limpo evita muita conversa repetida. O Conventional Commits funciona como um contrato: o tipo já diz a natureza da mudança, o assunto no imperativo descreve a ação e o corpo explica o motivo. Um validador que mostra as 8 regras ao mesmo tempo reduz as idas e vindas na revisão, porque o autor ajusta a mensagem antes mesmo de enviar. Assim a convenção deixa de ser só estética: um assunto bem formado alimenta as ferramentas que montam as notas de versão sozinhas, e uma falha silenciosa no formato pode travar toda essa automação.