Stylecop vs FXcop

Respostas:

171

O Stylecop é uma ferramenta de análise de estilo que funciona no nível do código-fonte. Ele existe principalmente para fornecer um único estilo comum que projetos gerenciados podem usar para permanecer consistentes dentro do mundo maior de software gerenciado. Ele toma decisões com relação ao estilo principalmente para evitar guerras santas (afinal, o estilo é quase sempre uma coisa inerentemente subjetiva). Acho que nunca conheci alguém que gostou de todas as regras do StyleCop, mas tudo bem . Isso significa que o StyleCop é geralmente um bom compromisso entre o vasto conjunto de diretrizes de estilo que existe. (Se as regras do stylecop fossem altamente personalizáveis, além de simplesmente ativá-las / desativá-las, isso anularia todo o propósito da ferramenta.)

O FxCop, por outro lado, é uma ferramenta de análise estática que funciona no nível da montagem gerenciada. Ele pode receber instruções por meio de atributos porque pode ver atributos em elementos de código, por exemplo. Ele detecta problemas que podem ser vistos no nível "binário" (por assim dizer) em oposição ao nível sintático.

Para responder à sua pergunta, o StyleCop não substitui o FxCop, e o FxCop não substitui o stylecop. São duas ferramentas diferentes com duas finalidades diferentes que podem fornecer um benefício real para o seu código.

(AKA, eu corro com ambos. :))


Alguns exemplos das coisas que um pode detectar versus coisas que o outro pode detectar:

As violações de StyleCop podem incluir avisos relacionados a: espaço em branco, formatação, documentação de método público por meio de comentários xml, ordem de definição de método em uma classe.

As violações do FxCop podem incluir avisos relacionados a: Globalização, acoplamento estreito, complexidade ciclomática, potenciais desreferências nulas.

Greg D
fonte
1
Sim, as respostas anteriores comparando os dois estão erradas em todos os aspectos. StyleCop e FxCop executam duas tarefas muito diferentes e vale a pena investigar o valor que cada um fornece em sua base de código e por que você deve executá-los.
Jedidja
3
Concorde que nem todas as regras do StyleCop são boas, mas como você diz, aquelas que você não quer podem ser desativadas. Estamos usando o StyleCop - depois de desativar as regras estúpidas, ele está fornecendo um bom valor para nós - a baixo custo ..! Recomendado. (note que odiamos isso à primeira vista ..)
stiank81
@ stiank81: Sim, acho que no começo todo mundo odeia o StyleCop. Depois de um pouco de tempo, porém, os benefícios realmente se estabelecem e ele prova ser uma ferramenta muito útil para manter a consistência no código-fonte. :)
Greg D
1
ótima resposta o que eu estava procurando :)
GibboK
16

stylecop funciona em seu código-fonte C #. fxcop examina seu código compilado em qualquer linguagem .net.

Sem Reembolsos Sem Devoluções
fonte
Então, se você usar o Stylecop, o FXCop pode agregar algum valor?
JL.
Na verdade, é melhor usar o FxCop.
Andrew Rollings
Pelo menos por enquanto, até que fique mais configurável. :)
Andrew Rollings
1
É improvável que o stylecop se torne significativamente mais configurável. Um recurso muito mais importante para o stylecop é a correção automática de violações de estilo.
Greg D
usamos o Resharper para fazer o código de forma automática e em conformidade com as regras do stylecop. Só isso já vale o preço de compra. E você obtém todos os outros benefícios além disso.
Sem Reembolsos Sem Devoluções
11

Uma alternativa ou um bom complemento ao FxCop / StyleCop seria utilizar a ferramenta comercial NDepend . Com essa ferramenta, é possível escrever regras de código sobre consultas LINQ (ou seja, CQLinq) . Isenção de responsabilidade: eu sou um dos desenvolvedores da ferramenta

Mais de 200 regras de código são propostos por padrão, que incluem projeto , arquitetura , a qualidade do código , a evolução do código , convenções de nomenclatura , código morto , o uso .NET Fx ...

CQLinq é dedicado a escrever regras de código que podem ser verificadas ao vivo no Visual Studio ou que podem ser verificadas durante o processo de compilação e relatadas em um relatório HTML / javascript .

A força do CQLinq em relação ao FxCop ou StyleCop é que é simples escrever uma regra de código e obter resultados imediatamente . As instalações são propostas para navegar pelos elementos de código correspondentes. Concretamente, é assim:

Regra de código CQLinq

Patrick da equipe NDepend
fonte
6

FXCop faz análise de código estático de seus assemblies de código gerenciado. Pense nisso como encontrar problemas que causarão problemas em tempo de execução ou que afetarão como o desenvolvedor acredita que o código será executado (código inacessível).

O StyleCop analisa a estrutura do seu código do ponto de vista do texto. Pense nisso como problemas que afetarão seu desenvolvimento e experiência de design (formatação, convenções de nomenclatura, documentação)

Ambos são ferramentas MUITO valiosas e você deve usar os dois, mas eles se concentram em problemas diferentes.

AllenSanborn
fonte