我是遗留 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/