Отслеживание недоставленных одноразовых предметов - PullRequest
8 голосов
/ 09 марта 2009

Существует ли инструмент, который может сканировать ваш код и определить, какие объекты, реализующие IDisposable, не располагаются в базе кода во время компиляции или во время выполнения?

У меня есть возможные области в коде, которые не располагают объектами, но трудно оглянуться назад и увидеть, какие объекты требуют этого в первую очередь.

Ответы [ 3 ]

8 голосов
/ 09 марта 2009

Существует множество инструментов статического анализа, которые могут помочь здесь.

И CodeRush / Refactor Pro, и Resharper во время кода в Visual Studio будут показывать вам недоставленные объекты.

И FxCop, теперь упакованный как часть Visual Studio Code Analysis, может генерировать предупреждения времени компиляции для недисциплинированных локальных пользователей и членов класса.

3 голосов
/ 24 февраля 2010

Профилировщик памяти ANTS от red-gate поможет с этим во время выполнения. Это один из моих любимых инструментов.

0 голосов
/ 09 марта 2009

Деструктор класса вызывается, когда сборщик мусора окончательно очищает классы, которые больше не используются. Что вы можете сделать, это поставить проверку в деструкторе, который называется «Dispose». Не рекомендуется использовать деструктор, но в целях тестирования это может быть полезно.

Единственная проблема этого метода заключается в том, что вам придется создать свой собственный класс, который наследует тот, который вам нужен для тестирования на IDispose, и переопределить метод Dispose (чтобы вы могли установить флаг, говоря, что он был вызван) инициализировать флаг в конструкторе и проверить его в деструкторе (который вы реализуете с помощью "~ ClassName () {...}")

...