За последние несколько лет я широко использовал NDepend. По сути, это инструмент анализа зависимостей, и поэтому он может помочь вам с множеством проблем, связанных с зависимостями.
Одной из основных вещей, для которых я его использую, является изучение зависимостей между моими сборками, типами и методами. Это помогает мне понять, не связана ли связь между типами, а также помогает определить возможности рефакторинга.
При запуске массивного рефакторинга, например, Извлечение типов .moving в другие сборки. Это позволяет вам увидеть, что зависит от того, что вам не нужно делать старым: «переместить мои типы в другую сборку, затем попытаться скомпилировать и посмотреть, что разбивает»
NDepend также имеет отличную визуальную матрицу для просмотра информации такого рода.
Кроме того, у него есть фантастический язык запросов CQL, который позволяет вам создавать собственные запросы. Это могут быть простые вещи, такие как «покажи мне все методы, которые вызывают этот метод», запросы на выделение мертвого кода, запросы на сложность вычислений, связывание и т. Д. И многое другое.
В свою очередь, он может быть интегрирован в процесс сборки, поэтому вы можете создавать предупреждения / сбои сборки на основе запросов CQL, например, «сбой сборки, если метод содержит более 100 строк кода, но без комментариев» (это это пример - я не предполагаю, что этот конкретный показатель является хорошей вещью).
Он также может импортировать данные покрытия кода и дает вам визуальное представление областей с небольшим покрытием кода, а также позволяет выполнять запросы CQL для информации покрытия кода (например, показать методы с охватом кода менее 70%)
Вы также можете загрузить свою текущую сборку своего проекта и предыдущую сборку и выполнить запросы между ними, такие как «показать мне все новые типы с охватом кода <70%» - это поможет вам ввести более строгие правила для существующих кодовых баз. </p>
Это фантастический инструмент, и его не так сложно освоить. В начале это страшно, просто из-за огромного объема информации, которую он вам дает, но настоятельно рекомендуется.