0

我们正在使用 PCLint 分析 Rhapsody 生成的代码,并希望忽略框架代码中的错误,这些错误不是我们编写的。

这意味着 PCLint 应该部分使用 Rhapsody 生成的注释来分析某些文件。例如,以下所有三个函数都位于同一个源文件中。

这个函数是完全自动生成的,应该被忽略。

static void initStatechart(SomeClass* const me) {
    me->rootState_subState = SomeClass_RiCNonState;
    me->rootState_active = SomeClass_RiCNonState;
}

在这个函数中,只有标有“Our code is here”的部分是我们编写的,应该由 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 ....
    /*#]*/
}

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

4

2 回答 2

0

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

沃尔特

于 2017-04-10T11:48:16.867 回答
-1

你写的代码很简单。您只需要确保已检查该文件。自动生成函数中的 PC-Lint 警告可以使用 -esym(#,sym ) 抑制消息 # 用于符号 sym -efunc(#,funcname ) 抑制消息 # 来自函数 funcname 在您的情况下,它将是 -efunc( 960, *::initStatechart) 为项目中的所有 initStatechart 函数抑制警告 960。

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

于 2018-01-16T23:27:03.007 回答