Ответ 1
Я использовал NDepend в течение последних нескольких лет. В основном это инструмент анализа зависимостей, и поэтому это может помочь вам с большим количеством проблем, связанных с зависимостью.
Одной из основных вещей, которые я использую для этого, является проверка зависимостей между моими сборками, типами и методами. Это помогает мне следить за тем, не связана ли связь между типами, а также помогает мне найти возможности рефакторинга.
При входе в массивный рефакторинг, например. extracting.moving types для других сборок, это позволяет вам понять, что зависит от того, что вам не нужно делать старым "переместить мои типы в другую сборку, затем попытаться скомпилировать и посмотреть, что происходит"
NDepend также имеет отличную визуальную матрицу для просмотра этой информации.
Кроме того, он имеет фантастический язык запросов, CQL, который позволяет писать пользовательские запросы. Это могут быть простые вещи, такие как "показать мне все методы, которые называют этот метод", запросам, чтобы выделить мертвый код, запросы о сложностях с циклеком, связь и т.д. И многое другое.
В свою очередь, он может быть интегрирован в процесс сборки, поэтому вы можете создавать предупреждения/сбои на основе запросов CQL, например "сбой сборки, если метод имеет более 100 строк кода, но без комментариев" (это является примером - я не предлагаю, чтобы эта конкретная метрика была хорошей вещью).
Он также может импортировать данные о покрытии кода и дает вам визуальное представление областей с небольшим охватом кода, а также позволяет запускать запросы CQL с информацией о покрытии кода (например, показать мне методы с охватом менее 70% кода)
Вы также можете загрузить свою текущую сборку своего проекта и предыдущую сборку и выполнить запросы между ними, такие как "показать мне все новые типы с охватом кода на 70%" - это поможет вам ввести более жесткие правила в отношении существующих базы кода.
Это фантастический инструмент, и его не так сложно изучить. Это страшно в начале, просто из-за большого объема информации, которую он дает, но настоятельно рекомендуется.