Java possui ótimas ferramentas de análise estática de código aberto, como FindBugs , Checkstyle e PMD . Essas ferramentas são fáceis de usar, muito úteis, são executadas em vários sistemas operacionais e gratuitas .
Estão disponíveis produtos comerciais de análise estática em C ++. Embora esses produtos sejam ótimos, o custo é alto demais para os alunos e geralmente é bastante difícil obter a versão de teste.
A alternativa é encontrar ferramentas de análise estática C ++ de código aberto que serão executadas em várias plataformas (Windows e Unix). Usando uma ferramenta de código aberto, ela pode ser modificada para atender a determinadas necessidades. Encontrar as ferramentas não foi tarefa fácil.
Abaixo está uma pequena lista de ferramentas de análise estática do C ++ que foram encontradas ou sugeridas por outras pessoas.
- Verifique em C ++ http://sf.net/projects/cppcheck/
- Oink http://danielwilkerson.com/oink/index.html
- Contador de código C e C ++ http://sourceforge.net/projects/cccc/
- Splint (das respostas)
- Carne de porco da Mozilla (das respostas) (agora faz parte do Oink)
- Dehydra da Mozilla (das respostas)
- Use a opção
-Weffc++
para GNU g ++ (das respostas)
Quais são algumas outras ferramentas portáteis de análise estática de C ++ de código aberto que alguém conhece e pode ser recomendado?
Alguns links relacionados.
- /programming/97454/c-static-code-analysis-tool-on-windows
- http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis
- http://www.chris-lott.org/resources/cmetrics/
- Uma ferramenta gratuita para verificar o código-fonte C / C ++ em relação a um conjunto de padrões de codificação?
- http://spinroot.com/static/
- Escolhendo uma ferramenta de análise de código estática
fonte
Respostas:
Oink é uma ferramenta criada sobre o front-end do Elsa C ++. O porco da Mozilla é um garfo da Elsa / Oink.
Veja: http://danielwilkerson.com/oink/index.html
fonte
O CppCheck é de código aberto e multiplataforma.
Mac OS X:
fonte
choco install cppcheck
Com relação ao compilador GNU, o gcc já possui uma opção embutida que permite avisos adicionais aos do -Wall. A opção é -Weffc ++ e trata das violações de algumas diretrizes de Scott Meyers publicadas em seus livros " C ++ eficaz e mais eficaz ".
Em particular, a opção detecta os seguintes itens:
fonte
-Weffc++
adverte sobre toneladas de construções perfeitamente perfeitas em uma grande base de código. Eu segundo a sugestão de-Wextra
, no entanto; não saia de casa sem ele!Em desenvolvimento por enquanto, mas o clang faz análise C e tem como objetivo lidar com C ++ ao longo do tempo. Faz parte do projeto LLVM .
Atualização : Embora a página de destino diga "O analisador é um trabalho contínuo em andamento", ela agora está documentada como um analisador estático para C e C ++.
Pergunta: Como executar o GCC / Clang para análise estática? (apenas avisos)
Opção do compilador: -fsyntax-only
fonte
Outra pessoa mencionou -Weffc ++, mas esse é realmente um dos únicos avisos do GCC que eu não ative por padrão. No entanto, o conjunto de avisos que ativo é a ferramenta de análise estática mais importante no meu kit. Você pode ver a lista completa de avisos recomendados .
Em suma:
Observe que alguns deles exigem uma nova versão do gcc, portanto, pode ser necessário eliminá-los da sua lista se você estiver preso no 4.5 ou algo assim.
fonte
John Carmack também menciona o PVS-Studio nesta interessante postagem no blog "Static Code Analysis" .
fonte
Se por código aberto você realmente quis dizer "gratuito", a análise pré-moldada da Microsoft é boa. Somente para Windows, é claro. É totalmente integrado ao Visual Studio e ao compilador. por exemplo:
fonte
Provavelmente, vale a pena dar uma olhada no trabalho de análise estática da Mozilla .
fonte
Splint parece preencher a conta para C.
Se você não especificou o código aberto, eu diria o PCLint da Gimpel Software é provavelmente uma das melhores ferramentas disponíveis para verificação de código estático em C ++. Mas, é claro, não é de código aberto.
Mac OS X:
fonte
O PREFast da Microsoft também está disponível no Windows Driver Kit. A versão 7.0 pode ser baixada aqui .
Os documentos da Microsoft afirmam que ele deve ser executado apenas no código do driver, mas este (antigo) post do blog estabelece etapas para executá-lo. Talvez ele possa ser integrado a um processo normal de compilação?
fonte
Estamos trabalhando em um plug-in do Eclipse CDT chamado metriculator. Ainda está em desenvolvimento, mas algumas métricas importantes (por exemplo, LSLOC, McCabe, EfferentCoupling) já estão implementadas.
Consulte http://sinv-56013.edu.hsr.ch/redmine/projects/metricular/wiki/Documentation para obter mais detalhes, como demonstração e documentação em vídeo.
A última versão noturna está disponível para instalação no site de atualização em: http://sinv-56013.edu.hsr.ch/metriculator/updatesite-nightly/site/
Descrição adicional
O Metriculator analisa estaticamente o código fonte C ++ e gera métricas de software. As métricas são implementadas como verificadores Codan. Os resultados da análise podem ser explorados em uma visão separada. Cada métrica possui propriedades configuráveis (por exemplo, um limite para 'linhas máximas de código por função'). Exceder esse limite relatará um problema e criará um marcador no editor de código-fonte.
Com o metriculator, você pode:
Atualmente, o metriculator vem com as seguintes métricas:
fonte
Você deve tentar oo-browser, ele tem uma integração incrível com o xemacs
fonte
Também é possível codificar extensões do GCC no MELT (uma linguagem específica do domínio projetada para estender o GCC) ou plug-ins do GCC em C (muito mais difícil) para fazer uma análise personalizada.
fonte
O Doxygen realiza algumas análises de fluxo de controle e gera gráficos. Pode não ser o que você está procurando, mas eu os encontrei úteis para olhar.
fonte