Main Content

解释 Polyspace 桌面端用户界面中的 Bug Finder 结果

本主题展示了如何在 Polyspace 桌面端产品的用户界面中审查 Bug Finder 结果。

打开 Polyspace® Bug Finder™ 分析的结果时,您会在结果列表窗格中看到一个列表。结果包括缺陷、编码违规或代码度量。

您可以首先缩小审查的重点:

  • 使用结果列表列中的过滤器来缩小列表范围。例如,您可以重点关注影响程度高的缺陷。

  • 按文件或结果族别组织结果。请使用列表上方的 图标。

缩小列表范围后,您可以开始审查各个结果。本主题介绍了如何审查结果。

要开始审查,请在列表中选择一个结果。

解释结果详细信息中的消息

解释消息

第一步是了解问题所在。阅读结果详细信息窗格中的消息和窗格中的相关代码行。

查找其他资源以寻求帮助

有时,您需要更多帮助才能得到一定的结果。您可点击 图标以打开所选结果的帮助页面。查看对结果进行说明的代码示例。检查 CWE 或 CERT-C 等外部标准,这些标准为解决问题提供了更多的依据。

此时,您应能决定是否修复该问题。如已确定问题的修复方案,一起审查该类型的所有结果会更有帮助。

查明导致结果的根本原因

有时,根本原因可能与显示结果的实际位置相去甚远。例如,您读取的某个变量可能未初始化,因为初始化代码不可达。当您读取该变量时会显示该缺陷,但根本原因可能是前面的 ifwhile 条件始终为 false。

导航到相关事件

通常情况下,结果详细信息窗格会显示导致该结果的事件序列。窗格还会突出显示这些事件。

在上面的事件回溯中,显示了以下序列:

  1. 声明变量 value

  2. 执行路径绕过一条 if 语句。如果该变量在 if 块内初始化,则此信息可能与问题有关联。

  3. 当前缺陷的位置:未初始化的变量

通常情况下,回溯会显示控制流中的重要点:进入或绕过条件语句或循环、进入函数等。对于特定缺陷,回溯会显示与该缺陷相关的其他类型的事件。例如,对于声明不匹配缺陷,回溯会显示两个互相冲突的声明的位置。

创建您自己的导航路径

如果事件回溯不可用,请使用其他导航工具跟踪您自己的代码路径。

在开始导航至代码中的路径之前,请提出以下问题:我要查找什么?根据您的回答,选择合适的导航工具。例如:

  • 要调查未初始化的变量缺陷,您可能需要确定该变量根本没有初始化。要查找该变量的先前实例,请在窗格中右键点击该变量并选择搜索所有引用。或者双击该变量。这些选项仅显示特定变量的实例,而不显示其他作用域中同名的其他变量。

  • 要调查以下 MISRA C:2012 Rule 17.7 规则的违规情形:

    The value returned by a function having non-void return type shall be used.
    您可能需要从函数调用导航到函数定义。右键点击该函数并选择转至定义

离开当前结果后,可以使用结果详细信息窗格中的 图标返回。

点击包含某个结果的源代码标记时,结果列表窗格中先前的结果选择以及结果详细信息窗格中的详细信息都将保持不变。您可以保持结果列表中的结果和结果详细信息固定的情况下,在源代码中导航。有时,您可能要查看与某个标记关联的结果。要更新结果选择和详细信息,请在按住 Ctrl 键的同时点击该标记或右键点击并选择选择此位置处的相关结果

在单独的窗口中导航

如果审查某个结果需要在源代码中进行更深入的导航,您可以创建一个重复的源代码窗口来关注该结果,在原始源代码窗口中导航。

右键点击窗格并选择创建代码副本窗口。右键点击显示重复文件名(以 -spawn 1 结尾)的选项卡并选择新建垂直组

在新建的重复文件窗口中执行导航步骤,同时缺陷仍然显示在原文件窗口中。调查完成后,关闭重复窗口。

相关主题