禁用Eclipse的错误发现.(Codan误报)

Man*_*d3r 22 c++ eclipse c++11

我的经验到现在为止是,Eclipse中的错误发现是没有任何解决方案(试过可怕buggish __GXX_EXPERIMENTAL_CXX0X__,-std=c++0x,-std=c++11在设置每附近点).我不想再寻找解决方案了.现在我只想看到真正的编译器错误.但是如何实现这一目标呢?

Ali*_*Ali 20

UPDATE: 这是一个很长的时间,因为我张贴的原始答案,它已经过时.我今天(2014年3月15日)双重检查:在Eclipse开普勒(编译号20130614-0229)就足够了

  • 下添加项目>属性> C/C++编译>设置然后上工具设置标签 GCC C++编译器>其它-std=c++11标志,

  • 然后在窗口>首选项> C/C++>构建>设置发现选项卡选择CDT GCC内置的编译器设置和添加-std=c++11标志命令来获得编译器的规格.在我的机器上,它在更改后看起来像这样:

    ${COMMAND} -E -P -v -dD -std=c++11 "${INPUTS}"

  • 清洁和重建两个项目索引(项目> C/C++指数>重建)作为Eclipse的趋向缓存错误信息,并告诉他们,即使他们是在改变设置后消失.

这肯定适用于我的机器.如果它没有在你的上面,那么你可能想要对此有所了解:虽然我不确定这种方法的正确性,也不是必须在我的机器上进行,但是对Eclipse的C++ 11完全支持.截至2014年3月7日,用户声称它帮助了他们,而上述方法没有.


2012年的原帖,现已过时:

这些虚假错误来自Codan.我还发布了一个错误报告(C++ 03 !!!)但同样的问题出现在最新稳定的Eclipse中,所以我认为没有发生太多事情:(

解决方法:

单击项目属性,然后单击C/C++ General> Code Analysis>语法和语义错误,并取消选择您获得的任何错误错误.

我只想看到真正的编译器错误

当然,您可以完全禁用静态分析,在这种情况下,您可以完全按照自己的意愿完成.


更新: 2名用户报告说Jeevaka所写的内容帮助了他们.我试过他写的东西,它对Juno SR1和CDT 8.1.1没有帮助.也许Codan开发人员改进了Juno SR2和CDT 8.1.2中的静态分析


Ael*_*ian 6

我对c ++ 11代码的Cordian错误感到困扰,这些错误在gcc中完美编译,同时启用了所有警告.我发现我认为是根本原因,至少在我的情况下.很少有关于c ++ 11的Cordian错误的其他问题被关闭作为这个问题的重复,并指向这个问题.所以我虽然会在这里发布我的答案.

这是我发现的: 项目属性> C++常规>预处理器...>条目> 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.下次构建后错误消失了.

我正在使用带有CDT 8.1.2的Juno SR2和手工制作的make文件.

添加更多颜色:

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

Cordian以多种方式收集错误.

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

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

当我在头文件中使用#pragma message试验问题时,我认为__GXX_EXPERIMENTAL_CXX0X__出了什么问题,看到了一些手动设置的在线建议,但这似乎也是一种解决方法.


Kri*_*lay 5

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

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

并添加具有名称__cplusplus和值的预处理器宏201103L

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