3

Я являюсь нынешним владельцем устаревшей кодовой базы C++. У него есть несколько десятков исходных файлов &. Проект обычно разрабатывается, строится и развертывается на Linux. В linux система сборки - scons/gcc, а продукт - один исполняемый файл.Индекс работоспособности Visual Studio имеет иерархию только до main()

Я хочу создать индекс работоспособности (MI) для различных частей кода, чтобы показать, что обновление архитектуры в области кода более удобно, чем предыдущая архитектура. Итак, я провел некоторое исследование и обнаружил, что Visual Studio 2013 (для которого у меня есть лицензия Ultimate) сделает это.

Я успешно импортировал весь источник в новое VS2013 «Консольное приложение Win32». Я также получил источник для создания, внеся некоторые изменения для размещения различий между gcc & VS2013.

Я попытался запустить «Анализировать | Вычислить код Метрики для [проект]» и VS2013 произвел эту ошибку:

 
Project: [omitted] 
Configuration: Debug 
Scope: None 
Assembly: [omitted] 
Maintainability Index: 
Cyclomatic Complexity: 
Depth of Inheritance: 
Class Coupling: 
Lines of Code: 
Message: The project target file '[omitted]' contains no managed code. 

Так что я изменил значение «Свойства | Свойства конфигурации | Общие вопросы | Поддержка Common Language времени выполнения «от« Без поддержки CLR »до« Чистой поддержки MSIL CLR », повторите ее и получите в окне« Результаты показателей кода »(сделайте все возможное, чтобы показать, что было выпущено, потому что я не могу опубликовать изображения):

 
Hierarchy      Maintainability Index Cyclomatic Complexity ... 
---------------------------------------------------------------------------------- 
* [executable] (Debug)        36      31 
    * Global           36      31 
    * main(int, char** const): int     36      31 

Я не могу получить больше деталей, чем main(), просто нет способа для расширения main(), например, с [исполняемым] или глобальным. Я думал, что смогу получить оценку по каждому файлу, по функциям или по классам.

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

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

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

+1

Что такое индекс ремонтопригодности? Может существовать хорошо известный инструмент для Linux, использующий разные имена (например, [C++ check] (http://sourceforge.net/apps/mediawiki/cppcheck/index.php?title=Main_Page) [отказ от ответственности - я не знаю " t использовал инструмент - я только что нашел его в Google). –

+0

Индекс работоспособности - это, в основном, метрика, указывающая относительную простоту обслуживания кода. Подробнее: http://msdn.microsoft.com/en-us/library/bb385914.aspx и http://www.projectcodemeter.com/cost_estimation/help/GL_maintainability.htm. Спасибо за ссылку на проверку C++, глядя на нее сейчас. –

+0

Просто посмотрел на проверку C++ - это хороший инструмент для статического анализа, но не то, что я ищу ... то, что я ищу, - это то, что может количественно определить, как один из способов реализации сложного математического алгоритма проще читать и поддерживать, чем другой способ его реализации. –

ответ

2

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

+2

Я думаю, что вам просто нужно использовать другой инструмент. Это правда, что создать управляемый код намного проще, но есть и некоторые анализаторы кода для C++. Если это не очень сложная метрика, ее легко найти. Однако в C++, поскольку шаблоны и препроцессор действительно могут иногда наносить хаос, анализаторы кода часто сильно запутываются. Тщательно там;) – quetzalcoatl

+3

Это в конечном итоге то, что я закончил делать ... Я смог использовать Klocwork и некоторые скрипты python, которые написал коллега, чтобы сгенерировать метрику. Я думаю, что после этого испытания я собираюсь создать новую метрическую метрику, которая является индексом, описывающим, как легко создавать метрики на конкретной кодовой базе. –

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

  • Нет связанных вопросов^_^