问题描述
寻找一种配置覆盖率以忽略某些代码段的方法。
例如,假设我有func1
和func2
的源代码。
我不希望覆盖范围分析func1
,但我仍然希望它分析func2
。
有没有办法做到这一点?
我可以添加一个特殊的嵌入式注释吗?
int func1(int* value)
{
*value++;
return 0;
}
int func2(int* value)
{
*value--;
return 0;
}
解决方法
您可以使用__COVERITY__
预处理程序宏(由Coverity编译器定义)排除一部分C / C ++代码。例如,要在分析中排除func1
但包括func2
,请执行以下操作:
#ifndef __COVERITY__ // <-- added
int func1(int* value)
{
*value++;
return 0;
}
#endif // <-- added
int func2(int* value)
{
*value--;
return 0;
}
相关:
- Synopsys Community support question "Ignore specific function",也介绍了如何使用
__COVERITY__
。 - Synopsys Support article "How to exclude the specific path or files from being analyzed",它描述了
skip_file
指令,可用于排除整个文件。 - SO question "What preprocessor symbols does Coverity define for a build using 'cov-build'?",原来是在问与此类似的问题,尽管从标题中并不清楚(因为它引用的是假定的解决方案,而不是描述问题),因此我不认为它是重复的。
使用预处理器宏“ COVERITY ”非常有用!
要忽略一行,可以使用// coverity [EVENT_TAG_NAME]方法,如以下链接中所述
https://doclazy.wordpress.com/2011/07/14/coverity-suppressing-false-positives-with-cod/
感谢所有帮助!