【发布时间】:2010-03-25 09:36:34
【问题描述】:
是否有支持 C++ 的 IDE 并能真正智能地搜索引用? “引用”是指在整个项目或工作区中使用类(或其成员)、变量、函数。
有很多 IDE 提供它。其中一些似乎只是搜索具有大量内容的同名文本,另一些则更聪明并检查上下文(如类边界、命名空间)但不够准确。
到目前为止,我尝试过的最好的方法是 Visual SlickEdit,但还有更多值得期待的地方。
class C1
{
int foo;
};
class C2
{
int foo;
};
例如,在这种情况下,当搜索 C1::foo 引用时,我不想也显示 C2::foo。
那么,有没有这么聪明的 IDE?
编辑2
到目前为止,每个人的答案都是 10 倍。
我尝试了Eclipse,参考搜索似乎比较好,但是索引中等大小的项目需要20分钟,4次5的内存耗尽并崩溃。我尝试增加它和其他一些建议,它变得更好了一些,但仍然很慢并且对这些崩溃感到恼火。
我尝试了 KDevelop3,但这个问题中提到的功能不是很高级 - 似乎只是非常高级的基于 grep 的文本搜索。
编辑4
KDevelop4 - 我试图让它工作,但最新的测试版它对于自定义 makefile 项目完全不可用,我无法用它做任何事情。
编辑5
我很惊讶,但 QT Creator 在我的测试中表现得非常好。它似乎没有创建一些标签/索引文件,但以某种方式设法非常精确地显示了变量/函数/类的用法。不幸的是,在遵循函数定义时,它似乎不能很好地与模板一起工作。
在处理引用、虚拟函数等方面,上述 IDE 都无法与 Visual SlickEdit 竞争。不过,QT Creator 是最接近的,所以我会选择它作为我问题的答案。
【问题讨论】:
-
我使用 SlickEdit (14.0.1.2),这似乎对我有用。如果我确实想要对 foo 的所有引用,我必须在项目文件中执行“在文件中查找”。对于虚函数,它会询问您是要对所有类的引用还是仅从您选择的类中引用。
-
@stefaanv 我在某些项目上使用右键菜单中的 GoToRefference。 “在文件中查找”不只是具有不同选项的文本搜索吗?我在那里没有看到任何内容选项。
-
是的,“转到参考”仅显示对 C1::foo 的引用。 “在文件中查找”搜索文本,因为我看不到其他显示引用的方式,因为就 SlickEdit 而言,C1::foo 和 C2::foo 之间的唯一相似之处是文本。
-
好的,我需要的是不要混合 C1::foo 和 C2::foo,SlickEdit 通常会这样做,但并非总是如此。