主要内容

解释 Polyspace Access Web 界面中的 Bug Finder 结果

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

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

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

  • 点击结果列表中的某个列标题来根据该列的内容对列表进行排序。例如,您可以按或按文件进行排序。

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

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

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

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

有时,您需要更多帮助才能得到一定的结果。点击 More help 图标可打开所选结果的帮助页面。查看对结果进行说明的代码示例。检查 CERT-C 等外部标准,这些标准为解决问题提供了更多的依据。点击 Propose fix 图标(如果可用)可查看该缺陷的修复建议。

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

查明导致结果的根本原因

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

导航到相关事件

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

Result Details pane showing a Non-initialized variable defect and an event traceback

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

  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.
    您可能需要从函数调用导航到函数定义。右键点击该函数并选择转至定义

如果您在源代码窗格中离开当前结果,点击结果详细信息窗格中的 Highlight result in Source Code 图标可返回源代码窗格中该结果所在的位置。

要从源代码窗格中选择其他结果,请在按住 Ctrl 键的同时点击该结果,或右键点击并从选择结果子菜单中选择一个结果。结果详细信息窗格会更新,但您选择的结果不会在结果列表窗格中突出显示。点击结果列表中的结果会更新结果详细信息源代码窗格。

存储源代码窗格导航和 Polyspace 操作

Polyspace 在导航历史记录窗格中显示某些审查工作流操作。

点击导航历史记录窗格中的一个操作,可在结果详细信息窗格中打开相关的结果。然后,在源代码窗格中导航到与该操作相关的代码位置。在继续审查结果的过程中,可以使用导航历史记录窗格返回之前的结果,并在源代码窗格中定位相关代码。

Polyspace 记录的操作包括:

  • 结果列表窗格中选择某个结果

  • 源代码窗格的右键点击菜单中选择保持在导航历史记录中的位置

  • 在图中选择一个节点,例如错误调用图变量访问图

  • 代码搜索调用层次结构全局变量使用全局变量访问窗格中选择某一行

通过点击某个重要操作的行号,在导航历史记录窗格中对该操作进行标记。

点击 Clear all actions 图标可从导航历史记录窗格中删除所有操作。

Navigation History pane

另请参阅

主题