Pergunta

Que regra de verificação de código estático definível você deseja ver adicionado ao FXCOP e/ou gendarme?

Por que você deseja ver a regra adicionada, por exemplo, quais são os benefícios etc?

Como sua regra poderia ser implementada?

Foi útil?

Solução

Pessoalmente, eu preferiria ver não usar IDisposable implementações em using declarações.

Então, se você tinha código assim:

var fs = new FileStream(...);

// Other code.

fs.Dispose();

Diria para você usá -lo em um using declaração.

O benefício seria que ele o alertaria para os casos que você não conhecemos onde os objetos que deveriam ser descartados não estão sendo descartados em tempo hábil.

No entanto, há momentos suficientes em que é uma situação válida para não declarar IDisposable As implementações em uma declaração de uso para uma regra como essa para se tornarem uma dor muito rapidamente. Na maioria das vezes, este caso está tomando um IDisposable implementação como um parâmetro para um método.

O que eu faço não Mean é o uso das aulas em que os detalhes da implementação removem a necessidade de ligar Dispose, (por exemplo MemoryStream ou DataContext); aqueles implementam IDisposable e sempre deve ter Dispose chamou sobre eles, independentemente do implementação Detalhes, pois é sempre melhor codificar contra o contrato exposto.

Outras dicas

Eu gostaria de definir e implementar minhas próprias regras muito rapidamente. Eu tentei isso uma vez para o FXCOP, mas achei a API não ser muito clara - e não havia muita documentação. Eu usei o FXCOP 1.36, talvez as coisas mudassem ...

Então, eu gostaria de ver o FXCOP tendo uma interface clara e fácil de usar ... isso seria ótimo :)

As regras que tentei implementar foram:

  • DocumentInternalMethods
  • DocumentInternalTypes
  • ...

Basicamente, eu queria fazer cumprir os composições XML aos membros não públicos.

Eu realmente gostaria que a análise binária fosse inteligente o suficiente para reconhecer a possibilidade de uma interface.

Se pudesse determinar ao abordar os tipos definidos e seus membros, se houver comuns que possam ser extrapolados para uma interface.

Claramente, isso não deve ser mais do que um aviso, uma vez que às vezes é reclamado de não usar explicitamente uma interface.

Ao pensar sobre isso, eu também gostaria de ver a análise binária para ser inteligente o suficiente para verificar o possível rebaixamento dos modificadores de acesso.

Não deve ser difícil determinar se uma classe, propriedade ou método pode ser mais restrito.

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