2017-04-06 76 views
0

我們使用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 * /放在您的代碼中(或者您想要使用的任何警告級別)以啓用這些部分的警告。 –

回答

0

您是否嘗試過加載MISRA配置文件?然後Rhapsody至少會生成PC-Lint用來忽略對MISRA規則的違反的聲明。

Walter

-1

你寫的代碼很簡單。你只需要確保文件被檢查。 在自動生成功能中的PC-Lint警告可以用 抑制-esym(#,sym)禁止符號sym的消息# -efunc(#,funcname)抑制從函數內發出的消息#funcname 在你的情況下,使用-efunc(960,* :: initStatechart)來取消項目中所有initStatechart函數的警告960。

困難的部分是混合代碼。在那裏,你應該如前所述使用-save和-restore。您需要找到正確的屬性或在代碼中插入命令。