Como garantir um único padrão de codificação no .NET com suporte a ferramentas

14

Provavelmente, a situação básica é familiar para todos. Você concordou com certos padrões de codificação em sua equipe e agora é hora de garantir que todos os sigam.

Alguns fazem isso através de programação emparelhada pesada, outros mantêm uma lista de padrões de codificação e fazem uma revisão manual. Outros até usam a ferramenta de análise de código estático do Visual Studio para garantir que os padrões de codificação sejam impostos.

Quais são as suas melhores práticas para garantir os padrões de codificação? Quais ferramentas você usa - existem algumas ferramentas essenciais que todo desenvolvedor deve conhecer? Como você integra a padronização do seu código em suas ferramentas de desenvolvimento?

Stefan Papp
fonte

Respostas:

15

O StyleCop (agora também o StyleCop for Resharper) é comumente usado para impor regras de estilo de codificação nas bases de código C #.

Ele pode ser integrado à sua compilação de IC e causar falhas na compilação se alguma violação tiver sido introduzida.

Oded
fonte
Mais alguma informação sobre como usá-lo? Eu gostaria de executar a verificação de estilo antes de cada confirmação. Então eu preciso de cli para isso. Existe algum. Não encontrei nenhuma informação relevante.
FreeLightman #
1
Isso pode ajudar blog.submain.com/stylecop-detailed-guide
z-boss
@R. - se apenas um pudesse personalizar as regras do StyleCop. Oh, espere ...
Oded
@R. - você também pode escrever suas próprias regras.
Oded
6

Primeiro, verifique se você possui um servidor de compilação adequado que cria continuamente seu código. TFS ou Jenkins / Hudson + Msbuild são boas opções. Nesse servidor de compilação, é claro que você executa testes e também pode executar análises de código estático e verificadores de sintaxe.

Eu recomendo usar o FxCop ou o Gendarme para análise de código estático. Ambos podem ser usados ​​lado a lado.

Uma chave importante para o sucesso: não os implante com um conjunto de regras massivo e espere que funcione bem. Você terá milhões de avisos e ninguém se importará.

As regras práticas são:

  • Sempre tenha zero avisos. Reduza o conjunto de verificações inicialmente, se necessário, adicione algumas novas verificações a cada sprint e corrija-as. Verifique se todas as verificações realizadas têm valor real para você e são consistentes com seus padrões.

  • Se você possui regras específicas de domínio às quais precisa aderir, não tenha medo de implementar suas próprias regras.

Para verificação da sintaxe, use o StyleCop ou o StyleCop for Resharper se você estiver usando o Resharper (que eu recomendo também).

Anders Forsgren
fonte
2

StyleCop e FxCop são minhas ferramentas leves que lembram estilos de código para meus desenvolvedores. O recarregador também é bom, mas torna o VS muito lento.

Eu recomendo o FxCop por causa de sua rica biblioteca de regras, com ótima documentação, classificações, exemplos e muitos outros recursos.

Há também a extensão StyleCop Fixer disponível para o visual studio, que ajuda a corrigir erros comuns.

Às vezes, as métricas de código também são afetadas pelos estilos de código. Você pode monitorar a manutenção dos códigos com esta ferramenta.

Reza Owliaei
fonte
2

Eu gostaria de enfatizar que a análise automática de código já mencionada (FxCop, StyleCopy, compilações de IC etc.) funcione primeiro, de preferência às revisões manuais. As verificações automáticas captam muito mais coisas do que uma revisão manual provavelmente faz, e normalmente são muito mais rigorosas, consistentes e são auto-documentadas. Revisões manuais podem ser boas para decisões de design de alto nível, etc., mas, na minha experiência, elas podem ser muito subjetivas e aleatórias.

Polyfun
fonte
0

O NDepend pode ser usado para impor vários padrões de codificação em um .NET Code Base. Possui cerca de 200 regras de código padrão que podem ser navegadas aqui . Também é fácil personalizar regras existentes ou criar suas próprias regras, pois com o NDepend, uma regra é apenas uma consulta C # LINQ .

Isenção de responsabilidade: trabalho para o NDepend

Patrick Smacchia - desenvolvedor NDepend
fonte