主要内容

将旧标准中的申述导入新标准

注意

此工作流仅适用于 Polyspace® Bug Finder™

当您从旧标准迁移到新版本标准时,Polyspace 会自动导入旧标准中的审查信息。以下标准支持将旧标准中的申述导入新标准:

  • 从 MISRA C™:2004 导入注释和注解到 MISRA C:2012。

  • 从 MISRA C:2004 和 MISRA C:2012 导入注释和注解到 MISRA C:2023。

  • 从 MISRA™ C++:2008 和 AUTOSAR C++14 导入注释和注解到 MISRA C++:2023。Polyspace 会自动将 MISRA C++2008 规则和 AUTOAR C++14 规则中的注解导入到相应的 MISRA C++:2023 规则中。

Polyspace 会自动从旧标准中导入这些审查信息:

  • 通过用户界面添加的状态严重性注释值。

  • 使用代码注解添加的申述。

有关导入注释的一般规则,请参阅 Import Review Information from Previous Polyspace Analysis

假设您的工程有以下源代码,您运行了 MISRA C:2012 分析。

#include <stdint.h>
#include <complex.h>
void foo() {
	uint16_t u16x = 0, u16y = 0;
	uint32_t u32x = 0, u32y = 0;
	u32x * (u16x + u16y);         
	u32x = (u16x + u16y) + u32x; 
	u32x += (u32y + u16y);

}

void bar() {
	_Complex float cx;
	_Complex double dx;
	float f;
	double d;

	cx + f;         
	cx + d;         
}
Polyspace 发现 16 处违反 MISRA C:2012 规则和指令的情况。假设您对违反 Directive 4.6 的行为进行了申述。

Results list for MISRA C:2012 showing justifications for violations of Directive 4.6

如果您将同一工程迁移到检查 MISRA C:2023 编码规则违规,Polyspace 会自动导入您为 MISRA C:2012 结果提供的申述。

Results list for MISRA C:2023 showing imported justifications for violations of Directive 4.6

Polyspace 在从旧的 MISRA C 标准迁移到新的 MISRA C 标准时,会导入申述和注解。如果当前分析同时检查了旧版和新版 MISRA C 标准的违规情况,则申述和注解导入到旧的 MISRA C 违规中。

将多个 MISRA C:2004 注解映射到同一个新版 MISRA C 结果

当您使用代码模块语法或多行注解语法来申述对 MISRA C:2004 规则和指令的违规时,如果多个违规映射到同一个 MISRA C:2012 或 MISRA C:2023 规则,Polyspace 不会导入每个申述。相反,Polyspace 只导入一组状态严重性注释值,并将这些值应用于该特定 MISRA C:2012 或 MISRA C:2023 规则违规的所有实例。

例如,假设您分析代码时发现违反了 MISRA C:2004 Rule 16.3 和 Rule 16.5。您可以使用注解语法来申述这些结果,为每条规则输入不同的状态和解释性注释。


//polyspace-begin misra2004:16.3 [Status 1] "Explanatory comment 1"
//polyspace-begin misra2004:16.5 [Status 2] "Explanatory comment 2"

/*code block start;*/
/* This block of code contains violations of
MISRA C:2004 rules 16.3 and 16.5 */
/*code block end;*/

//polyspace-end misra2004:16.3 
//polyspace-end misra2004:16.5 
 

这些违规行为对应于 MISRA C:2012 规则 8.2。当您根据 MISRA C:2012 标准检查注解代码时,Polyspace 只会导入第一行注解(针对 MISRA C:2004 Rule 16.3),并将其应用于所有 MISRA C:2012 Rule 8.2 的结果。第二行注解(针对 MISRA C:2004 Rule 16.5)会被忽略。在结果列表窗格中,所有违反 MISRA C:2012 Rule 8.2 的规则,其状态列都设置为 Status 1,而注释列都设置为 "Explanatory comment 1"

注意

对于每一条导入的注解与原始注解存在冲突的结果,输出摘要窗格都会显示一条警告消息。导入 MISRA C:2004 注解后,请检查您打算继续调查或修复的结果,确保它们没有被分配“已申述”状态。

另请参阅

|

主题