主要内容

在Polyspace桌面用户界面中解释代码验证结果

本主题展示了如何在Polyspace桌面产品的用户界面中检查Code Prover结果。下载188bet金宝搏要查看如何在Polyspace Access web界面中查看结果,请参见在Polyspace访问Web界面中解释代码验证结果(Polyspace密码验证器访问)

当你打开一个结果Polyspace®代码验证™分析,你看到一个列表结果列表窗格。该列表包括运行时检查、编码规则违反、代码度量和全局变量使用。

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

  • 在结果列表列上使用过滤器。例如,你可以关注红色支票。

  • 根据文件和功能组织结果。使用图标上方的列表。

    因为代码验证器运行时检查的结果依赖于前面检查的结果,所以从头到尾进行运行时检查会有所帮助。

另请参阅Polyspace桌面用户界面中的过滤和组结果.一旦您缩小了列表,您就可以开始查看单个结果了。介绍评审结果的方法。

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

解释结果

解释信息

第一步是了解问题是什么。阅读上面的信息结果细节窗格中的相关代码行窗格。

此时,您可能已经准备好决定是否修复该问题。

该信息由以下几个部分组成:

  • 检查颜色和图标:看到了代码验证结果和源代码颜色.在检查运行时错误时:

    • :红色表示明确错误。

    • :橙色表示可能存在错误。

    • :灰色表示不可达代码。

    • :绿色表示不允许某个错误发生。

  • 运行时检查的描述。

    在前面的例子中,检查确定了数组索引是否超出了数组边界。

  • 与运行时检查相关的值。

    在这个示例中,消息声明了数组大小(127)、数组边界(0..126)以及数组索引变量在代码中此时可以接受的值范围(0..555)。

  • 不精确的相关来源(用于橙色检查)。

    在这个示例中,消息声明两个volatile变量可能负责检查。

请参阅源代码工具提示中的变量范围

面板、带有工具提示的变量和操作都加了下划线。

在这个例子中,工具提示显示在:

  • s8_ret:可以看到它的数据类型和值的范围+操作。

    如果在+操作期间发生了数据类型转换,您还可以在工具提示中看到该转换。

  • +:您可以看到左右操作数的值以及结果。

  • :可以看到在赋值和结果期间发生的任何数据类型转换。

获得额外的帮助

有时候,你需要额外的帮助来获得某些结果。要打开所选结果的帮助页面,请单击图标。请参阅演示结果的代码示例。

找出导致结果的根本原因

有时,根本原因可能离显示结果的实际位置很远。例如,您读取的变量可能没有初始化,因为初始化不可达。当您读取变量时就会显示缺陷,但根本原因可能是以前的错误如果条件总是为假。

在源代码中导航

有时候,结果细节窗格显示导致结果的事件序列。然而,在大多数情况下,您必须通过代码找到自己的导航路径。在变量上使用工具提示,在您浏览代码时跟踪变量范围的传播。

int func (int var) {/* var的初始范围*/…var -= get ();/* var的新范围*/…set(&var);/* var的新范围*/}

在用户界面中使用这些快速导航路径:

  • 搜索所有对变量的引用并浏览它们。

    控件上右键单击变量名窗格中,选择搜索所有引用.或者,双击该变量。这些选项执行的不只是字符串匹配。这些选项只显示特定变量的实例,而不显示其他作用域中同名的其他变量。

  • 从函数调用导航到函数定义。

    上右键单击函数名窗格。选择去定义

  • 从函数导航到它的调用者和被调用者。

    单击图标结果细节窗格。您将看到包含结果的函数及其调用者和被调用者。单击呼叫者或被叫者名称导航到呼叫站点。双击名称导航到定义。

    或者,单击图标以查看导致结果的调用序列的图形表示。要导航到此序列中的函数,请单击图中的节点。

  • 从函数调用或循环关键字导航到函数或循环体中的错误。

    如果错误只发生在特定的函数调用或特定的循环迭代中,则函数调用或循环迭代用红色突出显示。右键单击红色函数调用或循环关键字。选择去原因如果选项是可用的。

  • 在全局变量的所有实例间导航。

    单击图标结果细节窗格。查看结果中的所有全局变量,并对它们进行读写操作。

在您开始在代码中导航之前,确定您要查找的内容并选择适当的导航工具。例如:

  • 调查一个Non-initialized变量检查,你可能想要确保变量根本没有初始化。查找变量的以前的实例,看看它是否被初始化了。

  • 调查…的违规行为MISRA C:2012规则17.7

    非void返回类型应使用的函数返回的值。
    您可能希望从函数调用导航到函数定义。

想要了解其他的例子,请看代码验证程序运行时检查.在导航离开当前结果之后,使用图标结果细节窗格以返回该结果。

如果单击包含结果的源代码令牌,则在结果列表以及关于结果细节窗格不改变。在源代码中导航时,可以将结果保存在结果列表中,并固定结果详细信息。有时,您可能希望看到与令牌关联的结果。为了更新结果选择和细节,Ctrl-单击令牌或右键单击并选择选择此位置的结果

在单独的窗口中导航

如果检查结果需要在源代码中进行更深入的导航,则可以创建一个重复的源代码窗口,在原始源代码窗口中导航时,重点关注结果。

右击在窗格中,选择创建重复代码窗口.右键单击显示重复文件名的选项卡(以产卵1),并选择新的垂直组

当缺陷仍然出现在原始文件窗口中时,在重复文件窗口中执行导航步骤。在调查完成后,关闭重复窗口。

相关的话题