首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >禁用Eclipse的错误发现。(Codan假阳性)

禁用Eclipse的错误发现。(Codan假阳性)
EN

Stack Overflow用户
提问于 2012-11-20 00:49:10
回答 4查看 8.8K关注 0票数 22

到目前为止,我的经验是,在没有任何解决方案的情况下,Eclipse的错误发现是非常糟糕的(在设置的每一点都尝试了__GXX_EXPERIMENTAL_CXX0X__-std=c++0x-std=c++11 )。我已经到了不想再寻找解决方案的地步了。现在我只想看到真正的编译器错误。但是如何做到这一点呢?

EN

回答 4

Stack Overflow用户

发布于 2013-03-12 14:39:42

我被c++11代码的Cordian错误困扰,这些代码在启用了所有警告的情况下在gcc中编译得很好。我找到了我认为的根本原因,至少在我的案例中是这样。很少有其他关于c++11坐标错误的问题是这个问题的副本,并指向这个问题。所以我想我应该把我的答案贴在这里。

这是我找到的:项目属性> C++常规>预处理器…> entries > GNU C++ > CDT GCC内置编译器设置将*__cplusplus=199711L*作为条目之一。

我对其进行了如下更改:在窗口>首选项> C/C++ >构建>设置>发现选项卡中,选择CDT GCC内置编译器设置,并将${COMMAND} -E -P -v -dD ${INPUTS}改为${COMMAND} -E -P -v -std=c++11 -dD '${INPUTS}‘。然后点击Apply。在下一次构建之后,这些错误就消失了。

我使用的是带有CDT8.1.2和手工制作文件的Juno SR2。

添加了更多颜色:

我不是专家,但以下是我认为在我的案例中发生的事情:

Cordian以多种方式收集错误。

一个是解析编译器输出。我的Makefile中的-std=c++11确保了这个部分一直正常工作,因为通过终端调用相同的Makefile不会标记任何错误。

另一种是通过“代码分析”。为此,可能还有其他任务,Ecplise需要知道编译器将使用的设置。Eclipse通过调用我在上面编辑的命令并解析输出来查找它们。通过在点击“应用”之前勾选“在控制台视图中分配控制台”,可以查看此命令的输出。这些设置包括目录和定义,如__cplusplus。当这些与通过我的Makefile调用时,gcc将使用的内容相匹配时,结果是一致的。

当我在头中使用#杂注消息来试验这个问题时,我认为__GXX_EXPERIMENTAL_CXX0X__是错误的,并看到一些在线建议手动设置它,但这似乎也是一个变通办法。

票数 6
EN

Stack Overflow用户

发布于 2014-03-14 22:28:59

在全新的Eclipse安装中,触发一个宏并重新构建索引解决了这个问题:

项目->属性->预处理器包括选择GNU选择C++用户设置条目按Add

并添加一个名称为__cplusplus、值为201103L的预处理器宏。

最后,重建索引。(项目->C/C++索引->重建)

票数 6
EN

Stack Overflow用户

发布于 2013-10-10 04:24:10

您还可以通过执行以下步骤从CDT作用域中删除有问题的代码部分:

  • 转至项目属性->C/C++常规->预处理器包括路径、宏等
  • 在条目上选择所需的语言tab
  • Add->Preprocessor
  • 输入名称"MY_CODAN_MACRO“和值"1"

现在你可以写下:

代码语言:javascript
复制
#idndef MY_CODAN_MACRO
// this code is visible by compiler only
#else
// this code is visible by code analysis and CDT, but not visible by compiler
#endif

我认为这个技巧在Indigo+中是可能的。我用的是Juno。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13458396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档