Вы используете NDepend? - PullRequest
       15

Вы используете NDepend?

23 голосов
/ 12 января 2010

Я пробовал NDepend , читал несколько постов об этом и даже слышал подкаст. Я думаю, что NDepend может быть действительно полезным инструментом, но я до сих пор не понимаю, где бы я его использовал.

Как ты это используешь? Вы используете это, почему? Почему нет?

Я хотел бы услышать о некоторых реальных примерах из реального мира.

Ответы [ 6 ]

29 голосов
/ 12 января 2010

За последние несколько лет я широко использовал NDepend. По сути, это инструмент анализа зависимостей, и поэтому он может помочь вам с множеством проблем, связанных с зависимостями.

Одной из основных вещей, для которых я его использую, является изучение зависимостей между моими сборками, типами и методами. Это помогает мне понять, не связана ли связь между типами, а также помогает определить возможности рефакторинга.

При запуске массивного рефакторинга, например, Извлечение типов .moving в другие сборки. Это позволяет вам увидеть, что зависит от того, что вам не нужно делать старым: «переместить мои типы в другую сборку, затем попытаться скомпилировать и посмотреть, что разбивает»

NDepend также имеет отличную визуальную матрицу для просмотра информации такого рода.

Кроме того, у него есть фантастический язык запросов CQL, который позволяет вам создавать собственные запросы. Это могут быть простые вещи, такие как «покажи мне все методы, которые вызывают этот метод», запросы на выделение мертвого кода, запросы на сложность вычислений, связывание и т. Д. И многое другое.

В свою очередь, он может быть интегрирован в процесс сборки, поэтому вы можете создавать предупреждения / сбои сборки на основе запросов CQL, например, «сбой сборки, если метод содержит более 100 строк кода, но без комментариев» (это это пример - я не предполагаю, что этот конкретный показатель является хорошей вещью).

Он также может импортировать данные покрытия кода и дает вам визуальное представление областей с небольшим покрытием кода, а также позволяет выполнять запросы CQL для информации покрытия кода (например, показать методы с охватом кода менее 70%)

Вы также можете загрузить свою текущую сборку своего проекта и предыдущую сборку и выполнить запросы между ними, такие как «показать мне все новые типы с охватом кода <70%» - это поможет вам ввести более строгие правила для существующих кодовых баз. </p>

Это фантастический инструмент, и его не так сложно освоить. В начале это страшно, просто из-за огромного объема информации, которую он вам дает, но настоятельно рекомендуется.

8 голосов
/ 18 марта 2010

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

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

4 голосов
/ 12 января 2010

На самом деле этот инструмент полезен, если у вас есть, например, интерфейс, который используется другой частью приложения, разработанного другим лицом / поставщиком.Каждый раз, когда вы хотите изменить интерфейс, вы должны выяснить, кто использует ваш интерфейс, чтобы не нарушать его код (сборка не будет собираться). Это применимо для больших проектов.

4 голосов
/ 12 января 2010

Я считаю полезным визуализировать изменения между версиями сборок. Даже для снимка изменений в данном выпуске ...

Я думаю, что это замечательно в среде непрерывной интеграции, где вы можете настроить запросы CQL для измерения метрик кода, которые вас интересуют (цикломатическая сложность, длинные методы и т. Д.), А затем вы можете оценить свои улучшения в этих областях за время.

2 голосов
/ 25 февраля 2011

Я также использую NDepend для сравнения двух версий некоторых сборок. NDepend имеют эту отличную особенность. Это дает мне представление об изменениях и ходе работы в сборке, методах, которые были добавлены, методы удалены и многое другое.

2 голосов
/ 18 марта 2010

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

...