Pergunta

Alguém tem alguma experiência de introduzir FxCop para código legado? Gostaríamos de ter a nossa compilação falhar se o código ninguém introduz que viola as regras. Mas, por enquanto, isso é impossível, já que o código legado tem mais de 9000 violações.

A única maneira de erros suprimir eu sei é através do atributo SuppressMessage, mas que só funciona em métodos, ea GeneratedCodeAttribute. Este último poderia ser usado para as classes e espaços de nomes (se bem me lembro), mas não deve ser usado para código não-gerado (veja aqui ).

Agora, vamos dar algum tempo cada dia para remover as violações, mas os novos continuam a ser introduzida, porque o nosso build não irá falhar.

Todas as idéias?

Foi útil?

Solução

Eu estive em uma situação similar. Comecei a usar FxCop em um projeto existente há algum tempo, e tinha muito poucos erros no início. O que fiz foi para desligar todas as regras, em seguida, ligue um grupo de cada vez, resolver erros como eu fui.

A Segurança e grupos de desempenho são um bom lugar para começar - que me ajudou a encontrar problemas que eu não estava ciente de antes. Algumas das regras são subjetivos, e não podem aplicar integralmente ao seu projeto, se em tudo. Por exemplo, se a internacionalização não é um problema, em seguida, deixar que o grupo desligado. Se existem regras específicas que não se aplicam a você, tais como regras de nomeação, em seguida, desligá-los.

Se você conseguir limpar um conjunto de erros para uma determinada regra, você pode configurar a compilação falhar se que as regras é violada no futuro. Portanto, não novos erros se infiltrará.

Se é um projeto de algum tamanho, basta ir uma regra de cada vez, reveja da regra relevância / importância, e quer corrigir os erros ou virar a regra fora se ela não se aplica.

Outras dicas

Comece perguntando a si mesmo: Você está disposto e capaz de alterar o código legado para se conformar com as regras FxCop? Ou, dito de outra forma:? Esta é a melhor maneira de gastar o seu tempo

Se você está disposto a gastar o tempo e esforço, comece por escolher o pequeno punhado de regras que você achar mais importante para a qualidade global e implementar aqueles. Se isso é útil você pode adicionar algumas regras, código de correção e assim por diante.

Na minha experiência, não há nenhuma abordagem big bang para a implementação de regras FxCop e afins. A única maneira viável é tomar pequenos pedaços de cada vez.

Você pode adicionar exceções para velhos violações em um projeto FxCop. Dessa forma, você não precisará adicionar qualquer atributo a seu código existente, e você receberá avisos sobre todas as novas violações.

Para isso crie um projeto no FxCop GUI, análise de correr com suas regras, então no resultado Ver Selecione violação deseja ignorar por agora. Botão direito do mouse e escolha "Excluir". avisos selecionados irá se mover para "excluídos no projeto" guia. Quando estiver pronto para voltar e corrigi-los, selecione e clique em "marca como ativo".

Essas exclusões são armazenados no arquivo .FxCop.

Ainda assim, eu recomendo a introduzir regras de forma gradual, para suavizar a curva de aprendizagem para todos.

Como sobre a seguinte abordagem:

  1. Executar FXCop com todas as regras em que são relevantes para o seu projeto
  2. salvar os resultados como uma linha de base
  3. Desenvolver novo código
  4. Executar FxCop
  5. Remova todos os resultados da linha de base

isso irá resultar em cheques FxCop em seu novo código ....

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