Индекс сопровождения Visual Studio имеет иерархию только вплоть до main ()

Я являюсь текущим владельцем устаревшей кодовой базы 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. Я думал, что смогу получить оценку за файл, за функцию или за класс.

Может кто-нибудь сказать мне:

  • Может ли VS2013 производить MI на уровне файла, функции или класса?
  • Как это сделать?
  • Есть ли программное обеспечение? < 50 долларов, что я могу запустить на коде в Linux для генерации MI?

Я хочу внести минимальные изменения в код, но я могу легко внести изменения в тип проекта, свойства проекта, создать новый проект & повторно импортируйте исходный код, измените продукт сборки на .dll или .lib и т. д.

3

Решение

Как отмечалось в моем комментарии, это происходит потому, что мой код неуправляемый C ++, и я обнаружил документацию, что метрики кода выполняются только для управляемого кода. Даже добавления одного из параметров / clr недостаточно для получения метрик, генерируемых на функциональном уровне.

2

Другие решения

Других решений пока нет …