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 .... 
    /*#]*/ 
} 

这可能吗?也许使用一些疯狂的正则表达式的东西?

+0

选项-save和-restore可能是解决方案的一部分。你可以例如使用-w0选项调用PC-lint以初始禁用所有警告。然后,您可以将/ * lint -save -w3 * /和/ * lint -restore * /放在您的代码中(或者您想要使用的任何警告级别)以启用这些部分的警告。 –

您是否尝试过加载MISRA配置文件?然后Rhapsody至少会生成PC-Lint用来忽略对MISRA规则的违反的声明。

Walter

你写的代码很简单。你只需要确保文件被检查。 在自动生成功能中的PC-Lint警告可以用 抑制-esym(#,sym)禁止符号sym的消息# -efunc(#,funcname)抑制从函数内发出的消息#funcname 在你的情况下,使用-efunc(960,* :: initStatechart)来取消项目中所有initStatechart函数的警告960。

困难的部分是混合代码。在那里,你应该如前所述使用-save和-restore。您需要找到正确的属性或在代码中插入命令。