0

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

Есть ли инструмент в Visual Studio 2015 Enterprise (или стороннем плагине), который может дать мне этот номер?

До сих пор я пробовал инструмент Code Code Visual Studio, но, похоже, он просто генерирует визуализацию со стрелками, которые я должен был бы подсчитать вручную, и, кроме того, это только выглядит как класс/struct-level, а не количество отдельные ссылки в каждом классе/структуре.

ответ

0

Чтобы расширить ответ Николь, я проверил пробную версию NDepend, и я считаю, что нашел цифры, которые я искал, в том, что они называют «матрицей зависимостей». Мое понимание этого заключается в следующем.

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

Dependdency Matrix

То, что я не понимаю, однако, почему, например, число в ячейке 0, 4 93, но число в ячейке 4, 0 52; не должны ли эти цифры быть равными? Сборка 0 используется только в сборке 4 столько же раз, сколько в сборке 4 используется сборка 0 - как эти цифры могут отличаться?

ОБНОВЛЕНИЕ: Я просмотрел видеоролик PluralSight на этом инструменте и выяснил, что число в зеленом поле указывает, сколько методов в ссылочной сборке ссылаются на ссылочную сборку. Число в соответствующем синем поле показывает, сколько методов в ссылочной сборке используется референсной сборкой.Ни одно из этих чисел точно не отражает количество вызовов, которые одна сборка делает другим (так как метод может содержать несколько ссылок), но я считаю, что он обеспечивает достаточный уровень грануарности, так как методы должны соответствовать SRP, и поэтому все ссылки в рамках метода должны относятся к одному поведению.

0

Вы можете использовать FxCop/Анализ кода, чтобы сделать это, это имеет ряд maintainability rules, наибольший интерес для вас, вероятно, будет:

CA1506: Избегайте чрезмерного сцепления класс
Это правило меры класс , путем подсчета количества уникальных ссылок на типы, которые тип или метод содержит.

Я считаю, что пороги 80 для класса и 30 для метода.

Это относительно легко установить, в основном вам просто нужно настроить его на проект:

enter image description here

Открытие набора правил позволяет выбрать, какие из них для запуска (и они ошибки или предупреждения ли) , существует много правил.

+0

Это полезно, но я не думаю, что это именно то, что мне нужно. Я ищу, чтобы получить фактическое количество ссылок, сделанных одной сборкой другой. Насколько я понимаю, количество предупреждений CA1506, возвращаемых на проект, будет равняться количеству типов, которые содержат 80 или более отдельных ссылок на другие типы, а также количество методов, которые содержат 30 или более отдельных ссылок на несвязанные типы. Насколько я понимаю это правильно? – Sphynx

+0

Я изучал использование FxCopCmd.exe (автономная версия командной строки инструмента анализа кода). По-видимому, он принимает XSL-файл в качестве аргумента для преобразования вывода, по крайней мере, для получения количества предупреждений CA1506 для имени файла или пространства имен, но это все еще не число, которое я получил после. В качестве побочного примечания инструмент возвращает «[Местоположение не хранится в Pdb]» по каждому имени файла по какой-либо причине, что означает, что я даже не имею, чтобы имя файла работало против. – Sphynx

1

NDepend (http://www.ndepend.com/) предлагает эту функциональность. Также может быть весьма полезно в более общих терминах для типа поискового анализа качества, который вы описываете.

+0

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

+0

У меня только что был коллеги, скачать пробную версию и провести анализ против решения. Я думаю, что конкретные цифры, которые я получил после, содержатся в «Матрице зависимостей». Число в синем - это число раз, на которое ссылаются, подсчет зеленым - это количество ссылок, которые рассматриваемая сборка сделала для других сборок. Я добавлю свой собственный ответ, поскольку у меня есть скриншот для включения. Спасибо, что указал мне в правильном направлении. – Sphynx

Смежные вопросы