我们在Eclipse中有一个使用CDT的项目。这是我们刚刚导入Eclipse的旧项目,我想确保我们开始使用静态代码分析来查找任何奇怪的东西。
问题是,有很多行会触发我们想要忽略的警告,其中主要是在switch语句中的漏洞。
我知道如何为lint做这个,但是对于CDT呢?是否有单行注释我可以放在线上?
示例:(“案例结尾没有中断”)
case enChA:
nChannel++;
// I want to ignore this fallthrough
case enChB:
nChannel++;
// And this one...
case enChC:
nChannel++;
// And this one...
case enChD:
nChannel++;
// do some more stuff...
break;
你应该试试
//no break
在下一个案例之前。
这些设置位于Window - > Preferences - > C / C ++ - > Code Analysis下。您可以自定义设置。例如,如果选择No break at the end of case
,则可以定义抑制警告的注释。默认情况下,这是“没有休息”。因此巧合地将警告消息复制/粘贴到您案例中的评论中:
正如您所看到的,文本不必是完全匹配,它也不区分大小写。
参考your follow-up question about unused variables:当您自定义Unused variable in file scope
时,您可以定义应忽略的变量名称:
有两个神秘的预定义异常“@(#)”和“$ Id”。不幸的是我找不到任何官方文档,所以我去了the source。看起来检查器只是测试变量名称contains()
是否有任何指定的异常。如果是,则警告被抑制。
在Eclipse CDT之外,有流行的虚空铸造技巧。如果编译器警告未使用的变量,则将其强制转换为void。此操作无效,因此它是安全的,但从编译器的角度来看,现在使用变量。我通常将它包装在一个宏中,以便清楚地表明我正在做的事情,例如
#define UNUSED(var) (void)(var)
void foobar()
{
int b; // not used.
UNUSED(b); // now it's used
}
解决了它。
我刚刚将警告中的文字添加到了我想要忽略的位置,直到上面的中断位置。
像这样:
case enChC:
++nChannel;
//No break at the end of case
case enChD:
++nChannel;
正如已经说过的那样,在这种特殊情况下,可以通过添加注释来解决:
//no break
要么:
//no break at the end of case
真正重要的是(没有休息)。
但是,要求您在本案例的结尾与下一个案例之间没有更多的评论,否则它将无效。例如,下一个案例仍然会产生警告:
case enChC:
++nChannel;
//No break
//This second case decrease the value
case enChD:
++nChannel;
您必须升级到Eclipse Oxygen.3(或2)。
从这些版本开始,只需使用“快速修复”即可抑制警告/标记。
我遇到过这个问题,我只想消除它们。我试图添加/ *没有中断* /,你应该确保它在下一个“案例”之前添加。这是我遇到的问题
这是我使用的解决方案:
要禁用恼人的通知,您需要转到首选项 - > C / C ++ - >编辑器,然后取消选中“突出显示非活动代码”,“键入时显示问题”等选项。希望这会有所帮助。