c++ - 在同一项目中使用 C 和 C++ 的 SourceMonitor

标签 c++ c static-analysis code-metrics source-monitor

使用 SourceMonitor xml 命令文件,我试图分析从 Git 中 check out 的整个存储库,我知道它在同一目录中同时包含 C 和 C++ 代码。

这是我的 XML 命令文件的一个片段。

<?xml version="1.0" encoding="utf-8"?>
<sourcemonitor_commands>
<command>
<project_file>testproj.smproj</project_file>
<checkpoint_name>Baseline</checkpoint_name>
<project_language>C++</project_language>
<source_directory>C:\Users\....</source_directory>
.......
</command>

在 GUI 中,我手动添加了其他类型的扩展,并且成功了!我尝试在上面的 xml 文件中添加这一行,但这导致 .C 文件的指标值为零:

<file_extensions>*.h,*.cpp,*.c,*.pdl</file_extensions>

我做错了什么?这甚至可能吗?我只想在一个 SourceMonitor 项目中完成所有工作。

最佳答案

为您的软件语料库创建两个独立的 SourceMonitor 项目

您无法从混合语言项目中获得一个软件指标这一事实反射(reflect)了 SourceMonitor 的设计方式。它围绕指标的/values/构建,可以显示、比较、排序......每种语言都有自己的一组指标(C++ 的类指标不适用于 C)。不同语言的同名指标也有不同的“绿区”。

组合多种语言的实用值(value)是有限的:例如,您将如何比较不同编程语言的两个文件的最大复杂度

为了说明这一点:您双击一个检查点以获取一个表格,其中包含所有涉及的指标的绝对值,一个文件一个文件,按字母顺序排列(文件名)。这些表中的所有度量值都是绝对值。通过单击相应的标题,您可以对您最感兴趣的标准进行排序(通常是负责检查点极值的文件)。

关于c++ - 在同一项目中使用 C 和 C++ 的 SourceMonitor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48451962/

相关文章:

c# - P/从 C# 调用 C++ template<T> 方法

c++ - 涉及接口(interface)时如何从库中扩展类?

c - 相同的代码+二进制在不同的机器上给出不同的结果

bash - 找出脚本需要的 BASH 版本

c++ - 将 .txt 文件的内容收集为字符串,C++

c++ - 递增迭代器 : Is++it more efficient than it++?

c++ - 高效访问矩阵列

c - fork 多个子进程和 open()/dup2()

java - 商业 Java 静态分析工具与免费的相比如何?

llvm - 如何在 LLVM 中编写自定义模块间传递?