Существует ли правило FxCop для локально используемых IDisposable? - PullRequest
6 голосов
/ 06 февраля 2010

... если я использую IDisposable в локальной переменной, но не вызываю Dispose () и не использую шаблон using ().

public void BadMethod()
{
    var fs = new FileStream("file.txt", FileMode.Create);
    fs.WriteByte(0x55);
    // no dispose, no using()
}

Точно так же, как «Типы, которые имеют одноразовые поля, должны быть одноразовыми» правило для полей.


EDIT: Заменен MemoryStream на FileStream, поскольку MemoryStream просто выделяет память и не использует (неуправляемые) ресурсы, поэтому кто-то может обсудить обязательный вызов Dispose ().

1 Ответ

15 голосов
/ 06 февраля 2010

Есть ли для этого правило FxCop? Да и нет.

В FxCop 1.35, на котором основан анализ кода в Visual Studio 2005, было правило DisposeObjectsBeforeLosingScope , которое именно так и поступало.

В FxCop 1.36 (Анализ кода в Visual Studio 2008) они удалили механизм анализа потоков данных, что означало, что это правило также необходимо удалить.

Однако в следующем FxCop ( Visual Studio 2010 Анализ кода) кажется, что DisposeObjectsBeforeLosingScope вернулось!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...