Uma ferramenta gratuita para verificar o código-fonte C / C ++ em relação a um conjunto de padrões de codificação? [fechadas]


151

Parece muito fácil encontrar uma ferramenta desse tipo para Java ( Checkstyle , JCSC ), mas não consigo encontrar uma para C / C ++. Não estou procurando um analisador de código estático semelhante a fiapos, gostaria apenas de verificar os padrões de codificação, como nomeação de variáveis, uso de maiúsculas, espaçamento, identificação, posicionamento de colchetes e assim por diante.


3
Se você não encontrar a resposta que você quer aqui, considere esta questão: stackoverflow.com/q/10819398/120163
Ira Baxter

Respostas:


57

A única ferramenta que conheço é Vera . No entanto, não o usei, portanto não posso comentar o quão viável é. A demonstração parece promissora.


Eu testei e é bem simples. Mas funciona!
Jader Dias 31/05

7
Eu tentei, mas fiquei desapontado. Ele tokenizou o código C ++, mas possui apenas um único tipo de token para "identificadores", portanto não diferencia entre nomes de classe, variáveis ​​de membro e variáveis ​​locais. Portanto, não há como encontrar uma imposição de diferentes convenções de nomenclatura para diferentes tipos de identificador.
John W

Vera não tem um conjunto muito abrangente de regras - mas eles são extensíveis (em TCL)
fmuecke

2
"Extensível" apenas para tarefas muito simples. Como a compreensão de Vera sobre C ++ é superficial, qualquer "verificação profunda de estilo" (considere uma regra possível [não estou sugerindo uma boa]: para cada alocação, há uma desalocação correspondente na mesma função) terá que codificar o conhecimento apropriado sobre C ++, e isso é realmente muito difícil, o que significa que não vai acontecer.
Ira Baxter

Corrigido o link para Vera: bitbucket.org/verateam/vera
congusbongus

49

4
+1. Isso é muito bom - embora tenha um estilo muito rigoroso. Não é tão fácil estender com regras próprias, como no vera ++.
fmuecke

Ótimo se você estiver usando o estilo C ++ do Google :) :) +1
jkp

3
Suponho que agora seja chamado cpplint. Ele pode ser encontrado em github.com/google/styleguide/tree/gh-pages/cpplint , o link acima para o c ++ lint está quebrado.
Zitrax

Apenas para referência, para instalar, você pode usar "pip install cpplint". Então você pode simplesmente usar "cpplint file.cpp" ou "cpplint --recursive". em vez de "./cpplint.py", que é muito preferível IMO. Mais fácil do que baixar através github pelo menos
Colin D


8

Tenho certeza que isso pode ajudar em algum grau verificador cxx . Além disso, essa ferramenta parece ser muito boa no KWStyle É da Kitware, o pessoal que desenvolve o Cmake.


1
cxxchecker parece muito morto para mim agora.
2131717

O verificador cxx é um link morto.
Wolf

7

Não é exatamente o que você pedir, mas eu achei mais fácil simplesmente todos concordam em um padrão de codificação astyle pode gerar e, em seguida, automatizar o processo.


1
É melhor você deixar claro que o ArtisticStyle se concentra apenas na formatação que, obviamente, não é uma coisa ruim :)
Wolf

6

Tente nsiqcppstyle . É um verificador de estilo de codificação baseado em Python para C / C ++. É fácil estender para adicionar suas próprias regras.



2

Eu usei uma ferramenta no meu trabalho, seu conjunto de ferramentas LDRA

É usado para testar o código c / c ++, mas também pode verificar padrões de codificação como MISRA etc.


1
Por que isso é modificado? Mesmo que o LDRA também seja um analisador estático - algo que a pergunta não está procurando - acredito que também seja capaz de verificar o código quanto a violações de um padrão de codificação.
Vitor Py

4
LDRA custa tanto quanto o seu carro médio ... não é a minha idéia de livre.
Lundin

2

Verifique universalindentguiem sourceforge.net .

ele tem muitos verificadores de estilo para C e você pode personalizar os verificadores.


UniversalIndentGUI Possui uma função de visualização ao vivo, pode exportar configurações e exportar scripts. É ótimo para experimentar diferentes "indentadores", como GNU Indent, Artistic Style e Uncrustify.
Congusbongus 20/05

1

Existe o cppcheck, que também é suportado pelo Hudson através do plugin com o mesmo nome.


4
O cppcheck é uma ferramenta de análise estática e não o que a pergunta está procurando.
Vitor Py

Talvez isso tenha mudado desde 2010: hoje o Cppcheck também inclui avisos para questões estilísticas. Mas, bem, o OP excluiu explicitamente os analisadores de código estático.
Wolf



-1

Atualmente, estou trabalhando em um projeto com outro projeto para escrever exatamente essa ferramenta. Eu olhei para outras ferramentas de análise de código estático e decidi que poderia fazer melhor.

Infelizmente, o projeto ainda não está pronto para ser usado sem um conhecimento bastante íntimo do código ( leia-se: é um buggy como o inferno ). No entanto, estamos nos movendo rapidamente, e esperamos lançar uma versão beta nas próximas 8 semanas.

O projeto é de código aberto - você pode visitar a página do projeto e, se quiser se envolver, gostaríamos de receber mais informações externas.

Não vou aborrecê-lo com os detalhes - você pode visitar a página do projeto , mas direi uma coisa: a maioria das ferramentas estáticas de análise de código tem como objetivo verificar se há erros no código e não se preocupa muito com a verificação de diretrizes de codificação. Adotamos uma abordagem mais flexível que nos permite escrever plug-ins para verificar tanto as "regras da casa" quanto os possíveis erros.

Se você quiser mais informações, não hesite em entrar em contato comigo.

Felicidades,


4
O último commit foi em junho de 2009. Parece não estar mais desenvolvido.
Eponymous
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.