c++ - Visual Studio 可维护性索引的层次结构仅向下到 main()

标签 c++ visual-studio visual-studio-2013 code-metrics maintainability

我是遗留 C++ 代码库的当前所有者。它有几十个源文件和头文件。该项目通常是在 linux 上开发、构建和部署的。在 linux 中,构建系统是 scons/gcc,产品是单个可执行文件。

我想为代码的各个部分生成可维护性指数 (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.

所以我将“属性 | 配置属性 | 常规 | 公共(public)语言运行时支持”的值从“无 CLR 支持”更改为“纯 MSIL CLR 支持”,重新运行它,并在“代码指标结果”窗口中得到了它(尽力展示输出的内容,因为我还不能发布图片):

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

我无法获得比 main() 更详细的信息,只是无法像 [executable] 或 Global 那样扩展 main()。我认为我能够在每个文件、每个函数或每个类级别上获得分数。

谁能告诉我:

  • VS2013 能否在每个文件、函数或类级别生成 MI?
  • 怎么做?
  • 是否有任何软件 < $50 可以在 linux 代码上运行以生成 MI?

我想对代码进行最少的更改,但我可以轻松更改项目类型、项目属性、创建新项目并重新导入源代码、将构建产品更改为 .dll 或 .lib 等。

最佳答案

正如我在评论中指出的那样,发生这种情况是因为我的代码是非托管 C++,并且我发现了代码指标仅在托管代码上运行的文档。即使添加其中一个/clr 选项也不足以获得在函数级别生成的指标。

关于c++ - Visual Studio 可维护性索引的层次结构仅向下到 main(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21055349/

相关文章:

c# - MSBUILD 宏文档?

visual-studio - 无法创建Xamarin.Forms应用程序

c++ - 编辑并继续生成幻像错误

c++ - Visual Studio 2013 Update 3 中的 C++/Zo 在哪里

c++ - 在 node.js 0.12.x 中使用 libuv 函数

c# - 从 C++ 头文件 : Pointers to Structures 创建 C# COM 接口(interface)

C++ TensorFlow SoftmaxCrossEntropWithLogits 返回(成本,梯度),如何访问成本?

c++ - 错误 C2065 : But it is for sure declared

css - 使用 Grunt grunt-contrib-less) 在 Visual Studio 2013 中编译 Bootstrap 3.1 LESS

c++ - 调试断言失败 : _CrtIsValidHeapPointer(block)