Отслеживание недоставленных одноразовых предметов
-
05-07-2019 - |
Вопрос
Существует ли инструмент, который может сканировать ваш код и определить, какие объекты, реализующие IDisposable, не располагаются в базе кода во время компиляции или во время выполнения?
У меня есть возможные области в коде, которые не располагают объектами, но трудно оглянуться назад и увидеть, какие объекты требуют этого в первую очередь.
Решение
Существует множество инструментов статического анализа, которые могут помочь здесь.
CodeRush / Refactor Pro и Resharper во время кода в Visual Studio будут показывать вам недоставленные объекты.
И FxCop, теперь упакованный как часть Visual Studio Code Analysis, может генерировать предупреждения времени компиляции для нерасположенных локальных пользователей и членов класса.
Другие советы
Профилировщик памяти ANTS из red-gate поможет с это во время выполнения. Это один из моих любимых инструментов.
Деструктор класса вызывается, когда сборщик мусора окончательно очищает классы, которые больше не используются. Что вы можете сделать, это поставить галочку в деструкторе, который " Утилизировать " был вызван. Не рекомендуется использовать деструктор, но для целей тестирования это может быть полезно.
Единственная проблема этого метода заключается в том, что вам придется создать свой собственный класс, который наследует тот, который вам нужен для тестирования на IDispose, и переопределить метод Dispose (чтобы вы могли установить флаг, говоря, что он был вызван), инициализировать флаг в конструкторе и проверить его в деструкторе (который вы реализуете с помощью " ~ ClassName () {...} ")