Pergunta

Existe uma configuração em ReSharper 4 (ou mesmo Visual próprio estúdio ...) que as forças de um aviso se eu esquecer de envolver código em um bloco using, ou omitir a chamada Descarte adequado em um bloco finally?

Foi útil?

Solução

análise Descarte Correto automática requer DFA (Data Analysis Flow) de uma forma global. É improvável que você cria um objeto IDisposable e não chamar qualquer método nele e não passá-lo em torno de como um argumento. Se objeto descartável é passado para outros métodos (incluindo chamando seus membros, quando "isto" é passado implicitamente), a ferramenta deve analisar se Descarte não é chamado dentro, ou aquele objeto não está armazenado em algum lugar para posterior descarte.

Dito isso, implementação simples de verificar se objeto descartável é, de facto eliminados com "usando" construção ou de qualquer outra forma renderia muito falsos positivos, e tornar a análise inútil.

Outras dicas

O descontentamento com os métodos atuais, eu criei minha própria: EyeDisposable . É uma instrumenter IL por isso deve pegar muitos vazamentos não capturados por análise estática. Ele ainda está em sua fase inicial, inpuits são bem-vindos.

Você poderia projetar um pequeno add-in para R # que você poderia ter executado dentro do editor de código que verifica o código e atualiza a análise de código para refletir que um objeto que está faltando a estrutura que você acabou de descrever.

Eu olhar para a arquitetura R # plugin se você decidir ir por esse caminho.

este post para alguns truques para testar para Dispose() em DEBUG. Basicamente, escrever um destrutor só de depuração que afirma que foram eliminados.

Você pode querer olhar para FXCop para este: http://msdn.microsoft.com/en-us/library/ms182328(VS.80).aspx

É uma pena R # não lidar com isso, mesmo se apenas um aviso para campos em sua classe e / ou variáveis ??que você criar.

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