PCLint部分分析部分文件
问题描述:
我们使用PCLint来分析我们的Rhapsody生成的代码,并且希望忽略框架代码中的错误,这些错误不是由我们编写的。PCLint部分分析部分文件
这意味着PCLint应该使用Rhapsody生成的注释部分分析一些文件。例如,以下所有三个函数都位于同一个源文件中。
该功能是完全自动生成的,应该忽略。
static void initStatechart(SomeClass* const me) {
me->rootState_subState = SomeClass_RiCNonState;
me->rootState_active = SomeClass_RiCNonState;
}
在这个函数中,只有标有“我们的代码在这里”的部分是由我们编写的,应该由PCLint分析。
static void rootState_entDef(void * const void_me) {
SomeClass * const me = (SomeClass *)void_me;
{
me->rootState_subState = SomeClass_InitState;
me->rootState_active = SomeClass_InitState;
{
/*#[ state InitState.(Entry) */
..... Our code is here ....
/*#]*/
}
RiCReactive_schedTm(&(me->ric_reactive), 1000, SomeClass_Timeout_InitState_id);
}
}
这个函数完全由我们编写,应该进行分析。
/*## operation someFunction() */
static void someFunction(SomeClass* const me) {
/*#[ operation someFunction() */
.... This function is fully written by us ....
/*#]*/
}
这可能吗?也许使用一些疯狂的正则表达式的东西?
答
您是否尝试过加载MISRA配置文件?然后Rhapsody至少会生成PC-Lint用来忽略对MISRA规则的违反的声明。
Walter
答
你写的代码很简单。你只需要确保文件被检查。 在自动生成功能中的PC-Lint警告可以用 抑制-esym(#,sym)禁止符号sym的消息# -efunc(#,funcname)抑制从函数内发出的消息#funcname 在你的情况下,使用-efunc(960,* :: initStatechart)来取消项目中所有initStatechart函数的警告960。
困难的部分是混合代码。在那里,你应该如前所述使用-save和-restore。您需要找到正确的属性或在代码中插入命令。
选项-save和-restore可能是解决方案的一部分。你可以例如使用-w0选项调用PC-lint以初始禁用所有警告。然后,您可以将/ * lint -save -w3 * /和/ * lint -restore * /放在您的代码中(或者您想要使用的任何警告级别)以启用这些部分的警告。 –