本主题可帮助您解决 C/C++test 使用过程中可能遇到的问题。
通用
分析哪些文件?如何分析头文件?
C/C++test 直接分析 C/C++ 源文件,间接分析头文件。根据当前选择,C/C++test 将分析所有 C/C++ 源文件,并报告所选项中所有源文件和头文件的违规(仅针对源文件包含的头文件)。
例如:
- 如果选择了项目根节点,则分析所有源文件(间接分析头文件)。
- 如果选择了单个源文件,则只分析该文件(不分析头文件)。
- 如果选择了单个源文件和单个头文件,则分析源文件(以及源文件包含的头文件)。
- 如果只选择了一个头文件,C/C++test 将跳过分析(不直接分析头文件)。
如何修改 C/C++test 控制台消息的详细级别?
选择 Parasoft> 首选项,选择控制台,然后选择所需的详细级别(高、正常、低)。
高 | 正常 | 低 | |
---|---|---|---|
关于当前步骤的名称和状态(完成、失败、最新)的基本信息 | 有 | 有 | 有 |
错误 | 有 | 有 | 有 |
警告 | 有 | 无 | 无 |
命令行 | 有 | 有 | 无 |
静态分析和单元测试执行期间打印的违规 | 有,完整格式 | 有,短格式 | 无 |
C/C++test 内存耗尽该怎么办?
为了防止 C/C++test 耗尽内存,应将内存参数添加到您用来启动 C/C++test 的脚本或快捷方式中。这两个参数是 JVM 的初始大小值(Xms)和 JVM 的最大大小值(Xmx)。通常,两者都设置为相同的大小(例如,1024MB)。但是,如果偶尔出现问题,但又不想总是分配大量内存,可以将参数设置为不同的大小(例如,初始大小为 1024MB,最大为 1400MB)。您可以设置的最大值取决于您的操作系统和 JVM。
示例:
C/C++test 独立版:cpptest.exe -J-Xms1024m -J-Xmx1400m
C/C++test Eclipse 插件:eclipse.exe -vmargs -Xmx1400m
-Xmx
设置的值,使用 CPPTEST_ENGINE_EXTRA_ARGS 选项自定义分配内存的大小。这可能对于执行静态分析或向 DTP 报告结果而言尤其有用。详细信息请参阅配置高级选项。如果 C/C++test 在生成报告时内存耗尽,请参阅C/C++test 在生成报告时内存耗尽该怎么办?。
如何调整连接超时?
如果您怀疑问题是由网络或连接问题引起的,您可以通过将这些 Java 系统属性传递到 Eclipse 进程来尝试调整超时:
选项 | 说明 |
---|---|
parasoft.ws.timeout | 为所有服务设置套接字超时。该值以秒为单位。 |
parasoft.ws.connection.timeout | 为所有服务设置连接超时。该值以秒为单位。 |
示例:
C/C++test 独立版:
cpptest.exe -J-Dparasoft.ws.timeout=180 cpptest.exe -J-Dparasoft.ws.connection.timeout=15
C/C++test Eclipse 插件:
eclipse.exe -vmargs -Dparasoft.ws.timeout=180 eclipse.exe -vmargs -Dparasoft.ws.connection.timeout=15
如果只设置了 parasoft.ws.timeout,将同时影响套接字和连接超时。
如何通过代理使用 C/C++test?
C/C++test 自动检测并使用 Eclipse 中指定的代理设置。不需要额外的配置。
遇到问题时,应该向 C/C++test 支持团队发送哪些信息?
请参阅准备技术支持压缩包。
安装说明
如何判断安装的是什么版本的 C/C++test?
检查当前安装的 C++test 版本的步骤:
- 选择 Help> About 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 中的 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 等)之前,确保您已正确配置特定编译器的环境。
C/C++test 无法用 QNX 编译器配置预处理源文件该怎么办?
如果 C/C++test 安装在名称中带有空格的目录(例如,C:\Program Files
),QNX GCC 编译器可能会阻止 C/C++test 正常工作。
如果您想同时使用 C/C++test 与 QNX 编译器,应确保 C/C++test 安装目录的名称不包含空格。
C/C++test 无法用 Debug Unit Tests 测试配置执行测试用例该怎么办?
如果您对使用 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;...
可以在原始路径中使用允许的通配符“*”。例如:
CPPTEST_COVERAGE_SRC_ROOT=/*/path=/local/path
还可以在列表文件(*.lst)中指定路径映射列表,并将其位置设置为值。例如:
CPPTEST_COVERAGE_SRC_ROOT=/path/mapping.lst
*.lst 文件中的每一项都被视为一个单独的条目。
在 C/C++test 中使用 Bazel 构建时无法分配内存该怎么办?
在某些情况下,链接过程可能会耗尽可映射页面。具体表现为,尽管机器有足够的空闲 RAM,仍然无法分配内存。要解决此问题,应增加每个进程的最大映射页面数。默认为 65530。将这个值增加十倍应能解决该问题。为此,可使用以下命令:
sysctl -w vm.max_map_count=655300
如果问题仍然存在,则可能需要进一步增加该值。
报告
如何创建包含活动编码标准规则列表的报告?
生成报告时,请指定包含以下条目的报告配置文件:
results.report.active_rules=true
某些字符在 C/C++test·报告中无法正确显示该怎么办?
Parasoft 产品生成的报告要求您的环境中使用无衬线字体。如果报告无法正确显示某些字符(如国家或地区的特殊字符),应确保系统上安装了无衬线字体。
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)。
在 Linux 中,Eclipse 的滚动条遮挡住一部分 C/C++test GUI 元素该怎么办?
由于某些 Eclipse 版本中的 bug,覆盖滚动条可能会遮挡列表或树中最后一项的一部分,导致用户无法点击该项。在 Linux 上,您可以通过设置以下系统变量来禁用覆盖滚动条: GTK_OVERLAY_SCROLLING=0
Ubuntu Linux 中无法显示 Parasoft 欢迎页面该怎么办?
使用最新的 Ubuntu Linux(21.10 或更高版本)时,应考虑使用以下命令安装额外的 'webkit2gtk-driver' 系统包:
> sudo apt install webkit2gtk-driver
由于未启动 HTML 浏览器而无法在 Ubuntu Linux 中显示 HTML 内容(C/C++test 规则文档、报告等)该怎么办?
当使用基于 Snap 的浏览器作为默认系统浏览器的 Ubuntu Linux 时(Ubuntu 21.10 及更高版本的默认设置),Eclipse IDE 可能无法启动此浏览器(请参阅 https://github.com/eclipse-platform/eclipse.platform.swt/issues/221)。
一种解决方法是,在 Preferences> General> Web Browser> External web browsers 中将 Eclipse 配置为使用特定的外部 web 浏览器。
- 如果列表中包含所需的浏览器,可直接选择并检查设置。
- 如果列表中不包含所需的浏览器,可点击 New... 按钮添加。例如,要在典型环境中使用 Firefox,则使用以下设置:
Name:Firefox (env)
Location:/usr/bin/env
Parameters:firefox %URL%
在 Linux C/C++test 独立版中,对于新工作空间,该 Firefox 浏览器已预先配置并自动选择。如有需要,可更新配置以匹配您的环境。
另一种解决方法是,安装非 Snap 版本的目标浏览器,并将其设置为默认系统浏览器。
由于启动的 HTML 浏览器报告未找到文件或拒绝访问文件而无法在 Ubuntu Linux 中显示 C/C++test 的报告该怎么办?
基于 Snap 的浏览器,例如基于 Snap 的 Firefox(Ubuntu 21.10 和更高版本中默认),可能无法打开位于 /home
目录外的 HTML 文件(请参阅 https://snapcraft.io/docs/snap-confinement)。
如果 C/C++test 的报告是在 /home
之外的位置生成的(例如 /tmp 中的某个位置),基于 Snap 的浏览器可能无法打开报告。要解决此问题,可使用 /home
中的某个位置作为生成报告的位置(例如。/home/<username>/parasoft/reports
)。
Eclipse 针对 C/C++test 生成的测试套件中正确的代码报告语法错误该怎么办?
当 Eclipse 的 CDT 索引器无法识别 C/C++test 的特定语法时,Eclipse 可能会以红色下划线标记测试套件中正确的代码元素来指示潜在的错误。要避免这种情况,可以启用项目属性中的 Parasoft C/C+test 包含路径提供者:
- 前往 C/C+ 常规> 预处理器,包括路径、宏等。
- 打开提供程序选项卡。
- 启用 Parasoft C/C+test 包含路径提供者。
此解决方法仅适用于 CDT 管理的项目。
Eclipse 中的调试无法与 Windows 中的 Cygwin GDB 一起使用该怎么办?
如果您使用的是 Cygwin GDB v.10 或更高版本,Eclipse 中的调试功能可能无法使用。这是一个已知的 Eclipse 问题。解决方法是使用 GDB v.9 或更低版本。
在 Linux 中使用 Eclipse IDE 时,在测试用例编辑器中编辑表格时遇到问题该怎么办?
如果在测试用例编辑器或测试用例向导中编辑表格时遇到问题(例如,单元格编辑困难,光标导航不起作用,无法更改列宽,无法保存新值),需检查您的 Linux 发行版是否使用 Wayland 显示服务器。如果您使用 Wayland 显示服务器,我们建议将其更改为 X11。
您可以通过以下方式验证 Linux 发行版使用的显示服务器:
- 在 Linux 终端中执行以下命令:"echo $XDG_SESSION_TYPE"(适用于大多数发行版)
- 检查桌面环境设置(并非所有发行版中都可用)
- 在登录界面检查当前设置,通常通过点击登录界面的轮子/齿轮/菜单图标(并非所有发行版中都可用;需要关闭 Automatic Login 功能)
- 检查 Settings/About 页面的 Windowing System 字段
您可以通过以下方式将显示服务器更改为 X11:
- 编辑显示管理器(GDM、SDDM 等)配置文件,例如,使用 GDM 的 Ubuntu 为
/etc/gdm3/custom.conf
(需要重新启动) - 点击登录界面的轮子/齿轮/菜单图标并选择 X11(并非所有发行版中都可用;需要关闭 Automatic Login 功能)
在 Linux 中遇到 RuleWizard UI 显示问题该怎么办?
如果遇到 RuleWizard UI 显示问题,请检查您的 Linux 发行版是否使用 Wayland 显示服务器。如果您使用 Wayland 显示服务器,我们建议将其更改为 X11。
您可以通过以下方式验证 Linux 发行版使用的显示服务器:
- 在 Linux 终端中执行以下命令:"echo $XDG_SESSION_TYPE"(适用于大多数发行版)
- 检查桌面环境设置(并非所有发行版中都可用)
- 在登录界面检查当前设置,通常通过点击登录界面的轮子/齿轮/菜单图标(并非所有发行版中都可用;需要关闭 Automatic Login 功能)
- 检查 Settings/About 页面的 Windowing System 字段
您可以通过以下方式将显示服务器更改为 X11:
- 编辑显示管理器(GDM、SDDM 等)配置文件,例如,使用 GDM 的 Ubuntu 为
/etc/gdm3/custom.conf
(需要重新启动) - 点击登录界面的轮子/齿轮/菜单图标并选择 X11(并非所有发行版中都可用;需要关闭 Automatic Login 功能)