Используйте историю управления версиями с NDepend для создания тренда

#version-control #ndepend

#контроль версий #ndepend

Вопрос:

Мы хотели бы выбирать моменты времени в нашем управлении версиями (git) для генерации показателей тренда.

Мы работаем над пробной версией NDepend, чтобы определить ее ценность для нашей большой базы кода, которой более 15 лет.

Шаги, предпринятые до сих пор, следующие:

  1. Извлеките данный набор изменений
  2. Сборка / анализ
  3. Переходите к 1, пока не будут проанализированы все выбранные наборы изменений

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

Это то, что можно (легко) сделать?

Ответ №1:

Я разработал решение:

  1. Обновите настройки NDepend, чтобы присоединять проекты NDepend к файлу .suo
  2. Обновите настройки NDepend, чтобы показатели тренда регистрировались «Всегда»
  3. Проверьте первоначальный набор изменений: git checkout {changesethash}
  4. Создайте решение
  5. Присоедините новый проект NDepend к текущему решению
  6. Запустите анализ для нового проекта NDepend
  7. Переместите файл проекта NDepend и папку NDependOut в папку решения .vs
  8. Отредактируйте файл проекта NDepend, изменив путь к файлу .sln с «.» на «..»

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

  1. Проверьте следующий набор изменений: git checkout {changesethash}
  2. Создайте решение
  3. Запустите анализ NDepend

Надеюсь, я ничего не пропустил.

Ответ №2:

Надеюсь, вы сможете автоматизировать большинство этих шагов с помощью NDepend.API. Вам не нужно присоединять проект NDepend к sln во время автоматизации, просто используйте метод SetIDEFile() для ссылки на ваши решения из проекта NDepend:

 var ndependServicesProvider = new NDependServicesProvider();
var projectManager = ndependServicesProvider.ProjectManager;
project.CodeToAnalyze.SetIDEFiles(new [] { new 
   IDEFile("C:File.sln".ToAbsoluteFilePath()","-test") } );
IAnalysisResult analysisResult = project.RunAnalysis();
  

Для агрегирования показателей тренда вы можете использовать NDepend.Пространство имен Trend и черпайте вдохновение из связанных с трендом инструментов OSS power tools: Датированные значения тренда журнала

Комментарии:

1. Интересно! Чтобы быть уверенным, вы хотите сказать, что я бы создал автономную программу, которая запускает предоставленный вами код независимо от Visual Studio IDE?

2. Да, безусловно, пожалуйста, прочитайте ссылку о NDepend. API, который все объясняет