Pergunta

Java tem algumas muito boas ferramentas de análise de fonte estática abertas, como FindBugs , Checkstyle e PMD . Essas ferramentas são fáceis de usar, muito útil, é executado em vários sistemas operacionais e livres .

produtos de análise estática Commercial C ++ estão disponíveis. Embora tendo tais produtos são grandes, o custo é apenas demais para os estudantes e, geralmente, é bastante difícil de obter versão de teste.

A alternativa é encontrar fonte C ++ aberto ferramentas de análise estática que será executado em várias plataformas (Windows e UNIX). Usando uma ferramenta de código aberto, pode ser modificado para atender certas necessidades. Encontrar as ferramentas não tem sido tarefa fácil.

Abaixo está uma pequena lista de ferramentas de análise estáticos C ++ que foram encontrados ou sugeridas por outros.

O que são alguns outros portátil open source C ++ ferramentas de análise estática que alguém sabe de e pode ser recomendado?

Alguns links relacionados.

Foi útil?

Solução

Oink é uma ferramenta interna no topo da extremidade da frente-a Elsa C ++. Carne de porco da Mozilla é um fork do Elsa / Oink.

Veja: http://danielwilkerson.com/oink/index.html

Outras dicas

CppCheck é open source e multi-plataforma.

Mac OSX:

brew install cppcheck

Em relação ao compilador GNU, gcc já tem uma opção embutida que permite adicional aviso para aqueles de -Wall. A opção é -Weffc ++ e é sobre as violações de algumas diretrizes de Scott Meyers publicado em seus livros " eficaz e mais eficaz C ++ ".

Em particular a opção detecta os seguintes itens:

  • Definir um construtor de cópia e um operador de atribuição de classes com memória alocada dinamicamente.
  • Prefere inicialização para atribuição em construtores.
  • Faça destrutor virtual na classe base.
  • "operador =" Have retornar uma referência a * isso.
  • Não tente retornar uma referência quando você deve retornar um objeto.
  • Distinguir entre prefixo e de sufixo formas de operadores de incremento e decremento.
  • Nunca sobrecarregue "&&", "||", ou "".

Em desenvolvimento por agora, mas clang faz análise C e é direcionado para lidar com C ++ mais Tempo. É parte do href="http://llvm.org/" rel="nofollow noreferrer"> LLVM projeto .

Atualizar : Embora a página inicial diz: "O analisador é um trabalho em progresso contínuo", é no entanto agora documentado como um analisador estático tanto para C e C ++.

Pergunta: Como posso executar GCC / Clang para análise estática? (Advertências apenas)

Compiler opção: -fsyntax-only

Alguém mencionou -Weffc ++, mas que na verdade é um dos únicos avisos CCG eu não ligar por padrão. No entanto, o conjunto de avisos que eu ligar é o importante ferramenta mais análise estática no meu kit. Você pode ver a lista completa de avisos recomendados .

Em resumo:

-pedantic -Wall -Wextra -Wcast-align -Wcast-qual -Wctor-dtor-privacidade -Wdisabled-otimização -Wformat = 2 -Winit-auto -Wlogical-op -Wmissing-declarações -Wmissing-incluem-dirs - Wnoexcept -Wold-style-cast -Woverloaded-virtual-decls -Wredundant -Wshadow -Wsign conversão -Wsign-promo -Wstrict nulo por sentinela -Wstrict-estouro = 5 -Wswitch-default -Wundef -Werror -Wno-unused

Note que alguns destes requerem uma nova versão do gcc, assim você pode precisar de eliminá-los de sua lista se você está de volta preso em 4,5 ou algo assim.

John Carmack também menciona PVS-Studio neste interessante post sobre "Análise de Código estático" .

Se por Open Source, você realmente quis dizer "livre", então a Microsoft é PREfast análise é uma boa. Somente para Windows é claro. É totalmente integrado no Visual Studio & o compilador. por exemplo:.

cl /analyze Sample.cpp

trabalho de análise estática da Mozilla é provavelmente olhar um valor.

Splint parece encher a conta para C.

Se você não especificou open source eu diria Gimpel Software 's PCLint é provavelmente uma das melhores ferramentas disponíveis para a verificação estática de código em C ++. Mas, é claro, não é open source.

Mac OSX:

brew install splint

Microsoft do PREfast também está disponível no Windows Driver Kit. Versão 7.0 está disponível para download aqui .

A Microsoft docs estado que só deve ser executado contra o código do driver, mas isso (antigo) post estabelece passos para executá-lo. Talvez ele pode ser integrado em um processo de construção normal?

Estamos trabalhando em um plug-in chamado metriculator Eclipse CDT. Sua ainda em desenvolvimento, mas alguns dos principais métricas (por exemplo LSLOC, McCabe, EfferentCoupling) já estão implementados.

Consulte http: //sinv-56013.edu.hsr .ch / redmine / projetos / metricular / wiki / documentação para obter mais detalhes, como demonstração de vídeo e documentação.

A última nightly build está disponível para instalação via site de atualização em: http://sinv-56013.edu.hsr.ch/metriculator/updatesite-nightly/site/

Descrição adicional

análise Metriculator estaticamente C ++ código fonte e gerar métricas de software. Métricas são implementados como damas Codan. Os resultados da análise podem ser exploradas numa vista separada. Cada métrica tem propriedades configuráveis ??(por exemplo, um limite para 'max linhas de código por função'). Exceder estes limiar irá relatar um problema e criar um marcador no editor de código-fonte.

com metriculator você pode:

  • analisar C ++ arquivos / pastas / projetos
  • definir limites métricas e ativar / desativar a métrica usando preferência Codans página
  • têm marcadores de problema em editores de código fonte
  • explorar os resultados métricas
  • Resultados métricas de exportação como nuvem de etiquetas (disponíveis como recurso opcional via site de atualização)

Atualmente metriculator vem com os seguintes resultados:

  • McCabe (Cyclomatic Complexidade)
  • EfferentCoupling por Tipo
  • Logical linhas de código fonte
  • número de membros por Tipo
  • Número de Parâmetros por Função

Você deve tentar oo-browser tem integração impressionante com xemacs

Pode-se também extensões de código de GCC em MELT (uma linguagem específica de domínio projetada para estender GCC) ou GCC plugins em C (muito mais difícil) para fazer alguma análise personalizada.

Doxygen faz alguma análise de fluxo de controle e gera gráficos. Aqueles pode não ser o que você está procurando, mas eu tenho foudn-los úteis para olhar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top