Отслеживание недоставленных одноразовых предметов

StackOverflow https://stackoverflow.com/questions/624490

  •  05-07-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top