本主题可帮助您解决 C/C++test 可能遇到的问题。
一般
分析哪些文件?如何分析头文件?
C/C++test 直接分析 C/C++ 源文件,间接分析头文件。根据当前选择,C/C++test 将分析所有 C/C++ 源文件,并报告所选内容中所有源文件和头文件的违规情况(仅针对源文件包含的头文件)。
示例:
- 如果选择了项目根目录,则将分析所有源文件(和间接头文件)。
- 如果选择了一个源文件,则仅分析该文件(不分析头文件)。
- 如果选择了单个源文件和单个头文件,则将分析源文件(以及头文件(如果源文件包含))。
- 如果只选择了一个头文件,那么 C/C++test 将跳过分析(不直接分析头文件)。
如何修改 C/C++test 控制台的详细程度?
选择 Parasoft> 首选项, 选择 控制台 然后选择所需的详细程度(高,正常,低)。
高详细度 | 正常详细度 | 低详细度 | |
---|---|---|---|
有关当前 步骤名称和状态的基本信息(完成,失败,最新) | Yes | Yes | Yes |
错误 | Yes | Yes | Yes |
警告 | Yes | No | No |
命令行 | Yes | Yes | No |
在静态分析和单元测试执行期间打印出违规 情况 | Yes, full-format | Yes, short-format | No |
如果 C/C++test 内存不足怎么办?
为防止 C/C++test 内存不足,请将内存参数添加到用于启动 C/C++test 的脚本或快捷方式中。这两个参数是 JVM(Xms) 的初始大小和 JVM (Xmx) 的最大大小。通常,两者都设置为相同的大小(例如,1024MB)。但是,如果您偶尔遇到问题,但又不想始终分配大量内存,则可以将参数设置为不同的大小(例如,初始大小为 1024Mb,最大大小为 1400MB)。您可以设置的最大大小取决于您的 OS 和 JVM。
示例:
独立的 C/C++test : cpptest.exe -J-Xms1024m -J-Xmx1400m
Eclipse 的 C/C++test 插件: eclipse.exe -vmargs -Xmx1400m
-Xmx
设置的值,使用 CPPTEST_ENGINE_EXTRA_ARGS 选项自定义分配的内存量。当您执行静态分析或将结果报告给 DTP 时,这可能特别有用。有关详细信息,请参见配置高级选项。如果 C/C++test 在生成报告时内存不足,请参阅What if C/C++test runs out of memory when generating the report? 。
如何调整连接超时?
如果您怀疑问题是由网络或连接问题引起的,则可能需要尝试通过将以下 switch 添加到 JVM 来调整超时:
Switch | 说明 | 示例 |
---|---|---|
parasoft.ws.timeout | 设置所有服务的套接字超时。值以秒为单位 | -Dparasoft.ws.timeout=60 |
parasoft.ws.connection.timeout | 设置所有服务的连接超时。值以秒为单位 | -Dparasoft.ws.connection.timeout=15 |
parasoft.tcm.timeout | 设置团队服务器服务的超时。它可以仅为此服务设置超时,也可以覆盖常规 parasoft.ws设置的值(以秒为单位)。 | -Dparasoft.tcm.timeout=30 |
如果仅设置了parasoft.ws超时,则将同时影响套接字和连接超时。
如果遇到问题,应将什么信息发送给 C/C++test 支持团队?
请参见准备支持存档。
安装
如何知道自己安装了哪个版本的 C/C++test?
要检查当前安装了哪个版本的 C++test:
- 选择 帮助> 关于 Eclipse (对于插件) 或 帮助> 关于 Parasoft C/C++test (对于独立版本)。
- 点击 Parasoft 按钮。打开【关于功能】对话框将。
- 在功能表(“版本”列)中查看 C/C++test 版本。
如果 C/C++test 没有(重新)正确安装怎么办?
尝试使用-clean
选项启动 Eclipse(一次)。这将强制刷新内部(Eclipse)注册表/缓存。
安装了 C/C++test 插件后,为什么 Eclipse 在启动时崩溃?
当 Eclipse 无法写入安装目录中保存配置文件的位置时,它可能会崩溃。当 Eclipse 设置为让多个用户共享一个安装区域时,此情况很常见。为了防止这种情况,请将配置文件存储在您的主目录中。请参见需求和多用户安装。
如何防止机器码浮动?
网络环境的变化可能会影响用于计算机器码的接口,并导致机器码不稳定。您可以使用 PARASOFT_SUPPORT_NET_INTERFACES 环境变量来指定稳定的接口并防止机器码浮动。
- 设置 PARASOFT_SUPPORT_NET_INTERFACES 环境变量。
将变量值设置为稳定的以太网接口。不要使用虚拟,临时或环回接口。
- 在 Windows 上:将该值设置为您的网卡的 MAC 地址。您可以使用ipconfig -all
命令获取地址。 示例:SET PARASOFT_SUPPORT_NET_INTERFACES=00-10-D9-27-AC-85
- 在 Linux 上: 将值设置为 "inet” 或 "inet6” 系列的网络接口之一。您可以使用
ifconfig
命令获取可用接口的列表。示例:export PARASOFT_SUPPORT_NET_INTERFACES=eth1
如果问题仍然存在,可以通过设置环境变量 PARASOFT_DEBUG_NET_INTERFACES 并将其值设置为 true 来获取诊断信息。这会将可以与技术支持共享的检查过程以及用于计算机器码的界面打印到标准输出中。该接口将标有 [SELECTED] 前缀。
如果机器码是 WIN32-0 怎么办?
如果您的机器码是 WIN32-0,请删除位于<DRIVE>:\Users\<USER_NAME>\.parasoft\C++test\10.x\license中的 许可文件。
为什么在 C/C++test 升级到新版本后,一些规则的抑制无法从 DTP 上获取?
与版本之间报文变更的规则相关联的抑制可能在 DTP 上不可用,并且必须重新抑制这些规则。
您可以通过配置以下高级选项为 10.4.1 版和更高版本中的 BD 类别规则还原旧报文(请参见配置高级选项):
CPPTEST_ENGINE_EXTRA_ARGS="-property flowanalysis.legacy.messages.for.<rule_ID>=true"
示例:
CPPTEST_ENGINE_EXTRA_ARGS="-property flowanalysis.legacy.messages.for.BD.PB.ARRAY=true -property flowanalysis.legacy.messages.for.BD.PB.ZERO=true"
若要成功还原旧报文,请确保从以下位置删除包含本地 C/C++test 缓存数据的 .cpptest 文件夹:<workspace_location>/.cpptest/.dtpengine/.cpptes
t.
测试与分析
如果未自动检测到编译器系列怎么办?
请确保已为给定的编译器正确配置了环境,在启动 Eclipse 之前(包括,$PATH, $LD_LIBRARY_PATH etc。)
如果 C/C++test 无法使用 QNX 编译器配置预处理源文件怎么办?
如果 C/C++test 安装在名称带有空格的目录(例如,C:\Program Files
)中,QNX GCC 编译器可能会阻止 C/C++test 正常工作。
如果要在 QNX 编译器中使用 C/C++test,请确保 C/C++test 安装目录的名称没有空格。
如何使用 Microsoft Visual C++ 编译器?
Visual C++ 6.0
按照从 Visual Studio 6.0 项目创建 C++test 项目中所述导入项目
其他 Visual C++ 版本
对于其他版本的 Microsoft Visual C++,请使用“Visual Studio 命令提示符”实用程序脚本(由 Visual Studio 安装提供)来打开带有 Visual Studio 环境的控制台。然后,从该控制台启动 Eclipse 以确保正确配置了环境。请注意,C++test 也可以作为 Visual Studio 2005 和更高版本的插件使用。
可以使用命令行工具 (cpptestcli) 创建一个项目吗?
您可以使用 cpptestcli 创建一个项目。请参见使用现有构建系统创建项目。
如果 C/C++test 无法使用调试单元测试测试配置执行测试用例怎么办?
如果您调试使用 Visual Studio 2019 附带的 Microsoft Visual C++ 14.2 编译器编译的代码,请在调试之前启动 Visual Studio 2019 IDE,并确保它在后台运行,直到 C/C++test 运行结束。
如果 C/C++test 在静态分析期间报告超时,该怎么办?
为确保分析完成,您可以执行以下操作之一:
- 通过配置以下高级选项来增加超时限制:
cpptest.analyzer.source.timeout=<TIMEOUT_IN_SECONDS>
请参见 配置高级选项。
- 禁用测试配置中最耗时的规则或指标。有关时间的信息包含在控制台和报告中显示的超时消息中。
- 联系 Parasoft 技术支持。
如果在收集静态覆盖率数据时没有找到一个或多个文件怎么办?
收集静态覆盖率数据时指定未找到的文件(或多个文件)的设置问题表明该文件的本地路径与其构建时路径不同。
作为解决方法,您可以使用 CPPTEST_COVERAGE_SRC_ROOT
环境变量将原始路径映射到本地路径:
CPPTEST_COVERAGE_SRC_ROOT=original/path1=local/path1;original/path2=local/path2;...
报告
如何创建包含激活码标准规则列表的报告?
生成报告时,请指定包含以下条目的报告配置文件:
results.report.active_rules=true
如果某些字符未能在 C/C++test 报告中正确显示怎么办?
由 Parasoft 产品生成的报告需要使用 sans-serif 字体才能在您的环境中使用。如果您的报告无法正确显示某些字符(例如国家字符),请确保在系统上安装了 sans-serif 字体。
如果 C/C++test 在生成报告时内存不足怎么办?
C/C++test 使用单独的 JVM 在代码测试后生成报告。您可以通过配置 parasoft.report.separate_vm.xmx
系统属性来增加为生成 C/C++test 报告分配的内存量,例如:
parasoft.report.separate_vm.xmx=1280m
您可以通过设置 parasoft.report.separate_vm.java_home
系统属性,将生成报告的 JVM 配置为使用具有更大内存总量大小的 Java,例如:
parasoft.report.separate_vm.java_home=C:/Program Files/Java/jdk-12.0.1
在 IDE 中工作
如果 Parasoft 菜单不可用怎么办?
将 C/C++ 或 C++test 设置为当前透视图 (通过选择 窗口> 打开透视图> 其他, 然后从打开的对话框中选择 C/C++或 C++test )。
如果 Eclipse 中的覆盖滚动条在 Linux 上隐藏了某些 C/C++test 的 GUI 元素怎么办?
由于某些 Eclipse 版本中的错误,覆盖滚动条可能会部分隐藏列表或树中的最后一项,从而阻止用户单击该项。作为 Linux 上的一种解决方法,您可以通过设置以下系统变量来禁用覆盖滚动条:GTK_OVERLAY_SCROLLING=0
如果 Eclipse 报告使用 C/C++test 生成的测试套件中正确的代码的语法错误怎么办?
当 Eclipse 的 CDT 索引器无法识别特定于 C/C++test 的语法时,Eclipse 可能会用红色下划线标记测试套件中正确的代码元素以指示潜在的错误。为了防止这种情况,您可以在项目属性中启用 Parasoft C/C+test 包含路径provider 属性:
- 转到C/C+ 常规> 预处理器包含路径, Macros 等等。
- 打开Providers 属性选项卡。
- 启用 Parasoft C/C++test 包含路径provider 属性。
此解决方法仅适用于 CDT 管理的项目。