Мне нужен инструмент анализа для C#
У меня большой старый код в C#.
Мне нужно проанализировать его, чтобы порекомендовать лучший способ для создания некоторых новых функций в программе.
Есть ли какой-нибудь инструмент, который позволяет быстро анализировать и может ясно показать ассоциации классов, которые помогают мне как можно быстрее войти в эту старую логику?
Любые истории опыта или рекомендации о том, как сделать это лучше всего, будут оценены.
Спасибо!
6 ответов
Я бы порекомендовал вам использовать NDepend.
Взгляните на этот список, он включает краткое описание каждого инструмента.
Существуют инструменты статического анализа, которые могут помочь с такой кодовой базой.
Редакция архитектуры Visual Studio 2010 поставляется с конструктором диаграмм классов и сгенерирует для вас диаграмму классов и зависимости (Architecture->Generate Dependency Graph->Class Diagram).
Существует также коммерческий nDepend.
Я настоятельно рекомендую вам взглянуть на Visual Studio 2010 Architecture Explorer и графы зависимостей, которые предоставляют вам широкие возможности для анализа устаревших кодов.
Чтобы завершить ответ OD, NDepend - это инструмент, специально предназначенный для анализа и освоения больших баз кода.NET (устаревших или нет).
Этот инструмент предлагает быстрый анализ, граф зависимостей и матрицу зависимостей, сравнение кода, средства управления кодом, полную интеграцию VS и другие функции. Вы можете попробовать это сейчас в своем коде, поскольку предлагается бесплатная пробная версия.
Поскольку вас интересует, в частности, изучение зависимостей, таких как ассоциации классов, ниже приведено введение, которое начинается с графика зависимостей.
Вот введение, которое нужно начать с матрицы зависимостей (лучше, чем график, для изучения зависимостей в большом куске кода).
ИМХО, лучшее, что вы можете получить, - это Resharper - комбинация использования иерархии типов, отслеживания значений и отслеживания вызовов - лучший способ навигации по старой кодовой базе военного корабля и его понимания.
Попробуйте запустить его через перспективу кода - он обеспечивает визуализацию вашего приложения в реальном времени. Я обнаружил, что это очень помогло понять, как работала большая база моего старого кода.