清理 Eclipse 索引,它与代码不同步

Posted

技术标签:

【中文标题】清理 Eclipse 索引,它与代码不同步【英文标题】:Clean Eclipse Index, it is out of sync with code 【发布时间】:2011-03-01 19:11:42 【问题描述】:

我通过 Linux 上的链接资源将 Eclipse 与 C++ 代码结合使用。代码分析索引似乎已损坏(Goto 定义使光标靠近定义,但不在定义上)刷新资源并不能修复它,重新启动 Eclipse 也不能修复它。

有没有办法刷新索引并重建它?

【问题讨论】:

【参考方案1】:

右键单击您的项目,进入“索引”子菜单,然后选择“重建”、“使用修改后的文件更新”或“刷新所有文件”。

我不知道这三个选项之间的区别,但是“使用修改后的文件更新”或“刷新所有文件”之一通常会为我修复它。

另外,我确定您已经这样做了,但请确保您运行的是最新版本的 Eclipse CDT。当前版本的索引似乎比以前的版本可靠得多。

【讨论】:

在过去,我有时也不得不关闭并重新打开项目,以使其能够接受。 “刷新所有文件”运行良好。 “重建”没有帮助。 更应该重视“新鲜”。在几个地方将 c++11 更改为 c++14 后,我重建了几次,这样__cplusplus__ 将是 201300,所以反过来我可以拥有 make_unique。在所有这些重建之后,我需要清新是我需要的步骤。【参考方案2】:

来自http://dev.eclipse.org/mhonarc/lists/cdt-dev/msg10390.html,“重建”、“使用修改后的文件更新”或“刷新所有文件”之间的区别:

重建:仅适用于整个项目。清除索引和索引 从头开始的文件。取消后,它会给您留下空白或 部分索引。

使用修改后的文件更新:适用于资源 选择。检查单个文件是否时间戳或 扫描仪配置已更改并更新已更改的索引 文件。

刷新所有文件:适用于资源选择。更新 索引中的选定文件。索引没有被清除,是安全的 取消操作。

【讨论】:

虽然这不是问题的答案,但这仍然很有帮助。 此描述符合我的预期,但与我从 Eclipse 的行为中实际看到的不符。对我来说,“刷新所有文件”解决了这个问题,但“重建”没有。如果“重建”真的删除了索引并从头开始重新构建,这没有任何意义。【参考方案3】:

转到您的项目properties -> C++ general -> Indexer

使用'project specific settings' 执行此操作, (或'Configure Workspace Settings...')。 取消选择'Enable Indexer'点击Apply。 选择'Enable Indexer'点击Apply

这应该彻底清除并重建索引。

【讨论】:

谢谢。这有帮助。此外,我需要选择“构建中未包含的索引源文件”选项。这是因为我的构建环境/工具链没有集成在 eclipse 中(即 eclipse 仅用于浏览和编辑代码,而不用于构建项目)。【参考方案4】:

以上方法都不适合我(Eclipse Indigo),索引仍然损坏并且拒绝正确重建。直到应用这个:

http://slsam2.blogspot.com/2012/02/eclipse-cdt-index-not-working.html

链接帖子的关键是:

Eclipse 不再将您的项目视为 C++ 项目。选择菜单File/New/Convert to a C/C++ project。索引源代码需要一些时间。

我仍然想知道 Eclipse 怎么会像那样不受控制地朝自己的脚开枪。我怀疑安装额外的软件包会触发它。也许在我的情况下支持 javascript

【讨论】:

非常感谢不仅发布链接,还保存相关信息以备链接再次中断时使用。这应该是 *** 答案的要求。 @dwanderson 它是:meta.stackexchange.com/questions/225370/… 只有这个适用于我的 Eclipse 版本:2019-03 (4.11.0)。谢谢 这是唯一对我有用的解决方案 (4.12.0)。【参考方案5】:

删除 only .metadata.plugins\org.eclipse.cdt.core 下的 .pdom 文件有帮助,我在将 Neon.2 升级到 Neon 后搞砸了索引器.3 这似乎解决了问题。 (此评论在上面已经存在,但不允许在上面确认)。

【讨论】:

这对我有用!我在基于 eclipse 的 IDE 中遇到了一个奇怪的错误,导致 eclipse 在启动时挂起并占用了大量内存(但我能够判断索引已损坏),所以 Josh 的回答对我来说并不实用。跨度> 【参考方案6】:

您是否尝试将 -clean 添加到 eclipse 可执行文件的命令行中?

【讨论】:

【参考方案7】:

Eclipse 不再将您的项目视为 C++ 项目。选择菜单文件/新建/转换为 C/C++ 项目。索引源代码需要一段时间。为我工作

【讨论】:

请在 Pavel 的回答中发表评论,而不是重复解决方案。【参考方案8】:

我发现我将全局索引器设置为“使用项目索引器设置中指定的构建配置”, 并且项目的索引器设置为不使用项目特定的索引器设置。 无论如何,无论我选择哪种配置,它都为索引器使用相同的固定配置。 修复: 窗口首选项、C/C++、索引器。在“索引器的构建配置”部分中选择“使用活动构建配置”。

快乐的日子。

【讨论】:

【参考方案9】:

我开始尝试 Josh Kelleys 和 mmmmms 的答案,但没有任何运气,但我最终通过检查我的包含路径来修复它。

查看它们的一种方法是在项目资源管理器中,展开项目并且应该有一个条目“包含”。在其中,检查每个包含路径上是否有一个小的黄色警告三角形。如果存在该三角形,则 eclipse 很可能无法识别路径。

通过在项目浏览器中右键单击“您的项目”来编辑包含路径,然后选择“属性”--> C/C++ 常规--> 路径和符号--> 包含。 em>

我看到了三种语言选项,Assembly、Gnu C、Gnu C++。在开始添加路径之前选择正确的路径(可能是 Gnu C++)。添加所有路径后,-->Apply --> Ok 并根据要求重建索引。

我错误的工作区路径看起来像 MyProject/MyProject/folder,而它应该是 MyProject/folder

对我来说,“问题”视图总是更新缓慢,即使在重建索引之后也是如此。要确保错误仍然存​​在,请双击问题条目,以便 eclipse 打开/重新加载有问题的文件。这对我来说似乎经常需要更新“问题”视图。

我真的不知道是eclipse还是我的scm搞砸了。无论如何,希望它可以帮助某人!

我使用 Luna 并使用外部 makefile 进行构建。

【讨论】:

以上是关于清理 Eclipse 索引,它与代码不同步的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL主从同步如何自动化清理日志?

MYSQL主从同步如何自动化清理日志?

Eclipse 中svn的合并与同步

eclipse svn同步资源库时忽略某些不需要提交文件类型和文件夹

Eclipse 和 Gradle 类路径不同步:无法解析为类型

goldengate12c不同步索引的处理办法