Я являюсь текущим владельцем устаревшей кодовой базы C ++. У него есть несколько десятков источников & заголовочные файлы. Проект обычно разрабатывается, собирается и разворачивается на Linux. В Linux системой сборки является scons / gcc, а продукт представляет собой один исполняемый файл.
Я хочу сгенерировать Индекс сопровождения (MI) для различных частей кода, чтобы показать, что обновление архитектуры в области кода более поддерживаемо, чем предыдущая архитектура. Итак, я провел некоторое исследование и обнаружил, что Visual Studio 2013 (на который у меня есть лицензия Ultimate) будет делать это.
Я успешно импортировал весь исходный код в новое VS2013 «Консольное приложение Win32». Я также получил источник для сборки, внеся некоторые изменения, чтобы учесть различия между gcc & VS2013.
Я попытался запустить «Анализ | Рассчитать метрики кода для [проекта]», и VS2013 выдал эту ошибку:
Проект: [опущен] Конфигурация: отладка Область применения: нет Сборка: [опущено] Индекс ремонтопригодности: Цикломатическая Сложность: Глубина наследования: Класс сцепления: Строки кода: Сообщение: целевой файл проекта «[пропущен]» не содержит управляемого кода.
Поэтому я изменил значение «Свойства | Свойства конфигурации | Общие | Поддержка общеязыкового языка» с «Без поддержки CLR» на «Чистая поддержка MSIL CLR», переназначил его и получил в окне «Результаты метрик кода» (выполняю лучше всего показать, что было выведено, потому что я пока не могу публиковать изображения):
Индекс ремонтопригодности иерархии Цикломатическая сложность ... -------------------------------------------------- -------------------------------- * [исполняемый] (отладка) 36 31 * Глобал 36 31 * main (int, char ** const): int 36 31
Я не могу получить более подробную информацию, чем main (), просто нет способа расширить main (), как в случае с [исполняемым файлом] или Global. Я думал, что смогу получить оценку за файл, за функцию или за класс.
Может кто-нибудь сказать мне:
Я хочу внести минимальные изменения в код, но я могу легко внести изменения в тип проекта, свойства проекта, создать новый проект & повторно импортируйте исходный код, измените продукт сборки на .dll или .lib и т. д.
Как отмечалось в моем комментарии, это происходит потому, что мой код неуправляемый C ++, и я обнаружил документацию, что метрики кода выполняются только для управляемого кода. Даже добавления одного из параметров / clr недостаточно для получения метрик, генерируемых на функциональном уровне.
Других решений пока нет …