PCLint проанализировать некоторые файлы частично
Мы используем PCLint для анализа нашего кода, сгенерированного Rhapsody, и хотели бы игнорировать ошибки из кода платформы, который не написан нами.
Это означает, что 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 ....
/*#]*/
}
Является ли это возможным? Может быть, вы используете сумасшедшие регулярные выражения?
2 ответа
Вы пытались загрузить профиль MISRA? Затем Rhapsody по крайней мере сгенерирует заявления, которые PC-Lint использует для игнорирования нарушений правил MISRA.
Вальтер
Код, написанный вами, прост. Вам просто нужно убедиться, что файл проверен. Предупреждения PC-Lint в функциях автоматического генерирования могут быть подавлены с помощью -esym(#,sym) подавляет сообщение # для символа sym -efunc(#,funcname) подавляет сообщение #, исходящее из функции funcname В вашем случае это будет -efunc( 960, *::initStatechart) для подавления предупреждения 960 для всех функций initStatechart в вашем проекте.
Сложная часть - смешанный код. Там вы должны работать с -save и -restore, как уже упоминалось. Вам нужно найти нужные свойства или вставить команду в ваш код.