Существует ли способ автоматически проверить существующий исходный код C# на объекты-экземпляры, от которых правильно не избавляются т.е. использующий попытку / выгода / наконец или использующий операторы? Или я должен просто вручную посмотреть на код?
Взгляните на FxCop для VS2010 - я считаю, что они восстановили правило DisposeObjectsBeforeLeavingScope , которое может делать именно то, что вы хотите.
CodeRush имеет некоторую поддержку для определения очевидных вариантов этого. Другой возможный вариант (возможно, с помощью необязательного символа компиляции) - добавить финализатор к вашим собственным объектам IDisposable
и громко пожаловаться, если они будут завершены без удаления (установите флаг bool в Dispose
]). Но обратите внимание: наличие финализатора изменяет поведение объектов, поэтому не оставляйте его в производственном коде (или даже в ваших обычных модульных тестах).
Используйте FX Cop для правила, чтобы проверить, помещены ли IDisposable в правильный блок Using ...
Вы можете использовать отражатель, чтобы пройти через объект с IDisposable
Ссылка: Есть ли список общих объектов, реализующих IDisposable для оператора using? для дополнительной идеи
HTH