Quais ferramentas de análise estática estão disponíveis para C #? [fechadas]

174

Quais ferramentas existem para análise estática em relação ao código C #? Eu sei sobre FxCop e StyleCop. Existem outros? Eu já encontrei o NStatic antes, mas ele está em desenvolvimento pelo que parece ser uma eternidade - está parecendo muito escorregadio com o pouco que vi sobre isso, então seria bom se ele visse a luz do dia.

Nessa mesma linha (esse é principalmente o meu interesse pela análise estática), as ferramentas para testar o código para problemas de multithreading (deadlocks, condições de corrida etc.) também parecem um pouco escassos. Typemock Racer acabou de aparecer, então eu vou olhar para isso. Algo além disso?

As opiniões da vida real sobre as ferramentas que você usou são apreciadas.

Paul Mrozowski
fonte
@IraBaxter Comecei uma discussão sobre esta questão no Meta e convido você a expressar seus argumentos sobre por que essa pergunta não deve ser excluída, se você quiser.

Respostas:

341

Ferramentas de detecção de violação de código:

  • Fxcop , excelente ferramenta da Microsoft. Verifique a conformidade com as diretrizes da estrutura .net.

    Editar outubro de 2010: não está mais disponível como um download independente. Agora ele está incluído no Windows SDK e, após a instalação, pode ser encontrado em Arquivos de Programas \ Microsoft SDKs \ Windows \ [v7.1] \ Bin \ FXCop \ FxCopSetup.exe

    Editar fevereiro de 2018 : essa funcionalidade agora foi integrada ao Visual Studio 2012 e posterior como análise de código

  • Clocksharp , com base na análise da fonte de código (para C # 2.0)

  • Mono.Gendarme , semelhante ao Fxcop, mas com uma licença de código-fonte aberto (baseado no Mono.Cecil )

  • Smokey , semelhante ao Fxcop e Gendarme, baseado no Mono.Cecil . Já não está em desenvolvimento, o desenvolvedor principal trabalha com a equipe do Gendarme agora.

  • Coverity Prevent ™ para C # , produto comercial

  • PRQA QA · C # , produto comercial

  • PVS-Studio , produto comercial

  • CAT.NET , complemento do visual studio que ajuda a identificar falhas de segurança Editar novembro de 2019: o link está morto.

  • CodeIt.Right

  • Nº de especificação

  • Pex

  • Opções SonarQube , FOSS e comerciais para oferecer suporte à escrita de códigos mais limpos e seguros.

Ferramentas métricas de qualidade:

  • NDepend , ótima ferramenta visual. Útil para estudos de métricas, regras, diferenças, acoplamentos e dependências de código.
  • O Nitriq , gratuito, pode escrever facilmente suas próprias métricas / restrições, visualizações agradáveis. Editar fevereiro de 2018: links para download agora mortos. Editar 17 de junho de 2019: Links não mortos.
  • RSM Squared , com base na análise da fonte de código
  • Métricas de C # , usando uma análise completa de C #
  • SourceMonitor , uma ferramenta antiga que ocasionalmente recebe atualizações
  • Code Metrics , um complemento do Reflector
  • Vil , ferramenta antiga que não suporta .NET 2.0. Editar janeiro 2018: Link agora morto

Verificando as ferramentas de estilo:

  • StyleCop , ferramenta da Microsoft (executada de dentro do Visual Studio ou integrada a um projeto MSBuild). Também disponível como uma extensão para o Visual Studio 2015 e C # 6.0
  • Agent Smith , plug-in de validação de estilo de código para ReSharper

Detecção de duplicação:

  • Simian , baseado no código fonte. Funciona com muitos idiomas.
  • CloneDR , detecta clones com parâmetros apenas nos limites do idioma (também lida com muitos idiomas que não sejam C #)
  • Clone o detetive em um plug-in do Visual Studio. (Ele usa o ConQAT internamente)
  • Atomiq , baseado no código fonte, muitos idiomas, visualização "roda" legal

Ferramentas gerais de refatoração

  • ReSharper - Recursos interessantes de análise e refatoração de código C #
Julien Hoarau
fonte
4
Consulte a página do MSDN sobre o FxCop: msdn.microsoft.com/en-us/library/bb429476%28VS.80%29.aspx "O FxCop é um aplicativo que analisa assemblies de código gerenciado (código que visa o Common Language Runtime do .NET Framework) e relata informações sobre os conjuntos, como possíveis melhorias de design, localização, desempenho e segurança ".
Sarah Vessels
O link FxCop foi removido do site da Microsoft. Aqui está o "download" do FxCop 10.0: microsoft.com/downloads/…
ulrichb
É este Simian: harukizaemon.com/simian/index.html ? (você tem um link quebrado). Também parece ser apenas o .NET 1.1.
Theraot
@ Theraot Obrigado, mudei o URL. Relativamente à versão .NET, Simian pode ser executado em .NET 1.1 no Java 5, mas isso não significa que ele detecta a duplicação em outras versões do .NET
Julien Hoarau
O Nitriq parece não estar mais disponível. O link para download (agora redirecionado para o NimblePros, parte da Telerik) diz "Desculpe, não oferecemos mais o Nitriq"
Narayana
7

A ferramenta NDepend é citada como Quality Metric Tools, mas também é uma ferramenta de detecção de violação de código . Isenção de responsabilidade: sou um dos desenvolvedores da ferramenta

Com o NDepend, é possível escrever Regra de Código em Consultas LINQ (o que chamamos de CQLinq) . Mais de 200 regras de código CQLinq são propostas por padrão. A força do CQLinq é que é simples escrever uma regra de código e obter resultados imediatamente . As instalações são propostas para procurar elementos de código correspondentes. Por exemplo:

Regra de código CQLinq

Além disso, o NDepend vem com muitas outras análises estáticas, como recursos. Esses incluem:

Patrick da equipe NDepend
fonte
Tive a oportunidade de testar o NDepend nas últimas semanas - grande fã, obtendo uma licença de desenvolvedor quando posso. :) Obrigado pelo seu trabalho!
Michael Armes
1
  • O Gendarme é um analisador estático baseado em regras de código aberto (semelhante ao FXCop, mas encontra muitos problemas diferentes).
  • O Clone Detective é um bom plug-in para o Visual Studio que encontra código duplicado.
  • Também falando do Mono, acho que o ato de compilar com o compilador Mono (se o seu código é independente da plataforma o suficiente para isso, um objetivo pelo qual você deseja se empenhar) encontra várias variáveis ​​não referenciadas e outros avisos que o Visual Studio ignora completamente. (mesmo com o nível de aviso definido como 4).
Kris Erickson
fonte
1

Você já viu o CAT.NET ?

Da sinopse -

O CAT.NET é uma ferramenta de análise de código binário que ajuda a identificar variantes comuns de certas vulnerabilidades prevalecentes que podem dar origem a vetores de ataque comuns, como Cross-Site Scripting (XSS), injeção de SQL e injeção de XPath.

Eu usei uma versão beta inicial e parecia aparecer algumas coisas que vale a pena observar.

markdevilliers
fonte
-1

O Klocwork possui uma ferramenta de análise estática para C #: http://www.klocwork.com

Alen
fonte
Nossa empresa comprou isso. Na faixa de US $ 30 mil para nós
Dan dot net
-1

A Optimyth Software acaba de lançar um serviço de análise estática na nuvem www.checkinginthecloud.com . Faça o upload do seu código com segurança, execute a análise e obtenha os resultados. Sem aborrecimentos.

Ele suporta vários idiomas, incluindo C #, para mais informações em wwww.optimyth.com

Javier Salado
fonte
-1

O Axivion Bauhaus Suite é uma ferramenta de análise estática que funciona com C # (assim como C, C ++ e Java).

Ele fornece os seguintes recursos:

  • Visualização da arquitetura de software (incluindo dependências)
  • Aplicação de regras de arquitetura, por exemplo, camadas, subsistemas, regras de chamada
  • Detecção de clone - destacando cópia e colada (e código modificado)
  • Detecção de Código Morto
  • Detecção de Ciclo
  • Métricas de software
  • Verificações de estilo de código

Esses recursos podem ser executados de forma única ou como parte de um processo de Integração Contínua. Os problemas podem ser destacados por projeto ou por desenvolvedor quando o sistema é integrado a um sistema de controle de código-fonte.

Mark Dalgarno
fonte