Domanda

Esiste un'impostazione in Resharper 4 (o anche Visual Studio stesso ...) che forza un avvertimento se dimentico di racchiudere il codice in un blocco utilizzando o ommettere la chiamata Dispose corretta in un finalmente bloccare?

È stato utile?

Soluzione

La corretta analisi automatica dello smaltimento richiede DFA (Data Flow Analysis) in modo globale. È improbabile che si crei un oggetto IDisposable e non si chiami alcun metodo su di esso e non lo si passi come argomento. Se l'oggetto usa e getta viene passato ad altri metodi (inclusa la chiamata ai suoi membri, quando "questo" viene passato in modo implicito), lo strumento dovrebbe analizzare se Dispose non viene chiamato all'interno o quell'oggetto non viene archiviato da qualche parte per uno smaltimento successivo.

Detto questo, l'implementazione ingenua del controllo se l'oggetto usa e getta è effettivamente smaltito con " usando " costruire o in altro modo produrrebbe troppi falsi positivi e renderebbe inutile l'analisi.

Altri suggerimenti

Malcontento con i metodi attuali, ho creato il mio: EyeDisposable . È uno strumento IL, quindi dovrebbe rilevare molte perdite non rilevate dall'analisi statica. È ancora agli inizi, gli introiti sono ben accetti.

Potresti progettare un piccolo componente aggiuntivo per R # che potresti aver eseguito all'interno dell'editor di codice che scansiona il codice e aggiorna l'analisi del codice per riflettere che sei un oggetto a cui manca la struttura che hai appena descritto.

Esaminerei l'architettura del plug-in R # se decidessi di seguire quella strada.

Vedi questo post sul blog per alcuni trucchi per il test di Dispose () in DEBUG . Fondamentalmente, scrivi un distruttore solo DEBUG che afferma di essere stato eliminato.

Potresti dare un'occhiata a FXCop per questo: http://msdn.microsoft.com/en-us/library/ms182328(VS.80).aspx

È un peccato che R # non lo gestisca, anche se solo un avvertimento per i campi nella tua classe e / o variabili che crei.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top