控件显示结果时使用的各种颜色Polyspace®代码验证™分析。
控件上的特定图标和颜色显示不同的验证结果结果列表和结果细节窗格。
Polyspace代码验证检查代码中的每个操作是否存在特定的运行时错误。该软件根据操作是否证明在所有或部分执行路径上存在或不存在运行时错误来分配颜色。
检查颜色 | 目的 | 例子 | 图标 |
---|---|---|---|
红色的 |
突出显示已证明会在所有执行路径上导致特定错误的操作 Polyspace代码验证验证依据语言标准确定错误。尽管某些错误对于特定的编译环境是可以接受的,但它们违反了语言标准。为了允许某些环境依赖行为,使用适当的分析选项。有关更多信息,请参见验证假设和检查行为. |
红色的溢出: z = x+y;
操作 |
|
灰色的 | 突出了遥不可及的代码。 |
灰色的遥不可及的代码检查: 如果(x > 0) {}{}
的 |
|
橙色 | 突出显示在某些执行路径上可能导致错误的操作。 有关更多信息,请参见Polyspace代码验证器中的橙色检查. |
橙色溢出: z = x+y;
分析无法证明该行动是否 最常见的原因是,操作仅对某些值溢出 |
|
绿色 | 突出显示已证明不会在所有执行路径上导致特定错误的操作 |
绿色溢出: z = x+y;
操作 |
*
对于大多数检查,软件会在路径上的第一个运行时错误之后终止执行路径。因此,如果它证明了某个操作出现了明确的错误(红色)或没有错误(绿色),则该证明仅对代码中尚未在该点终止的执行路径有效。看到红色和橙色检查后的代码验证器分析.
除了检查运行时错误之外,Polyspace代码验证还显示关于代码的其他结果。
结果 | 目的 | 图标 |
---|---|---|
编码规则的违反 | 表示违反预定义或自定义编码规则。 | 用于预定义的规则和自定义规则。 |
代码度量 | 表示代码复杂度指标。 | 对于不超过您指定的限制的度量对于超过限制的指标。 |
全局变量 | 表示全局变量声明。 | 对于共享的可能不受保护的变量和对于非共享的未使用的变量 |
Polyspace使用以下颜色方案来显示代码源窗格。
行与检查:
每一次检查结果列表窗格中,Polyspace将检查颜色分配给相应的代码段。
对于包含宏的行,如果宏被折叠,Polyspace将用该行中最严格检查的颜色对整个行进行着色。严重程度按以下顺序递减:红色、灰色、橙色、绿色。
这遥不可及的为
循环包含一个宏MAX_SIZE
.整条线是灰色的。
如果包含宏的行中没有检查,Polyspace将在宏折叠时以黑色下划线显示该行。
对于所有其他行,Polyspace只对与检查关联的关键字或标识符着色。
这个任务有三个检查:我
和used_global
初始化但数组选项卡
可以在其边界之外访问。的[
操作符用橙色表示问题。
违反编码规则的行:
对于每一个编码规则的违反结果列表窗格中,Polyspace分配给相应的关键字或标识符:
一个(倒三角)符号,如果编码规则是一个预定义的规则。可用的预定义规则为MISRA C®, MISRA®AC AGC, MISRA c++,或JSF®c++。
这如果
语句和||
行动违反MISRA规则。
一个符号,如果编码规则是自定义规则。
此函数名违反了自定义命名约定。
与工具提示:
控件上的关键字或标识符有工具提示源窗格中,Polyspace:
如果关键字或标识符与检查相关联,则使用实线下划线。
这一行有检查和工具提示输入
,%
和used_global
.
如果关键字或标识符与检查没有关联,则使用虚线下划线。
这一行有工具提示为
和<
,但没有检查。
在函数调用或循环命令上使用红色虚线下划线,以指示函数体或循环体包含潜在的运行时错误。工具提示显示了函数或循环体中导致错误的行。
这叫function_with_red
导致运行时错误。
函数定义:
当定义一个函数时,Polyspace将函数名用蓝色表示。
由于条件编译而停用的行:
Polyspace将浅灰色赋给由于条件编译而预处理出来的代码。例如,这样的代码发生在# ifdef
没有定义分支的宏的语句。此代码不会影响验证(或实际运行时行为)。
的变量访问窗格显示代码中的全局变量以及对变量的读和写操作。
例如,used_global
全局变量是否被访问四次:一次在初始化期间,一次在函数中function_with_red
,函数中有两次function_with_grey
.
配色方案如下:
变量的颜色:
橙色:共享的,不受保护的全局变量(仅适用于多任务代码)
绿色:共享的,受保护的全局变量(仅适用于多任务代码)
黑色:非共享的,已使用的全局变量
灰色的:未共享的、未使用的全局变量
看到全局变量.
操作的颜色:如果在不可达代码中发生操作,则为灰色,否则为黑色。
在上面的例子中,函数中的一个操作function_with_grey
是无法到达的,但另一个是可以到达的。
有关更多信息,请参见多空间桌面用户界面的可变访问.