2010-03-25 66 views
6

是否有支持C++的IDE,能夠真正智能地搜索引用? '引用'是指整個項目或工作空間中類(或其成員),變量,函數的用法。帶有智能參考搜索功能的Linux C++ IDE

有很多IDE提供它。他們中的一些人似乎只是爲了搜索具有相同名稱的文本而給出了很多東西,另一些更聰明並檢查上下文(如類邊界,名稱空間),但不夠準確。

迄今爲止我所嘗試過的最好的是Visual SlickEdit,但仍然有更多的希望。

class C1 
{ 
    int foo; 
}; 
class C2 
{ 
    int foo; 
}; 

例如,在這種情況下,尋找C1::foo引用C2::foo要過出我不想當。

那麼,有沒有一個IDE會非常聰明?

EDIT2

10X大家迄今的答案。

我試過Eclipse,引用搜索看起來相對比較好,但需要20分鐘來索引中等大小的項目和4次5的內存和崩潰。我試圖增加它和其他一些建議,它有點好一點,但仍然非常緩慢和煩人的這些崩潰。

我試過KDevelop3,但在這個問題中提到的功能不是很先進 - 似乎只是非常先進grep基於文本搜索。

Edit4

KDevelop4 - 我試圖使它的工作,但最新的測試它的自定義生成文件的項目相當無法使用,我無法用它做任何事情。

Edit5
我很驚訝,但Qt Creator的在我的測試中表現非常好。它似乎並沒有創建一些標籤/索引文件,但不知何故設法非常精確地顯示變量/函數/類的用法。不幸的是,當遵循函數的定義時,它似乎無法正確使用模板。

沒有一個提到的IDE可以在引用,虛函數等方面與Visual SlickEdit競爭.QT Creator是最接近的,所以我會選擇它作爲我的問題的答案。

+0

我使用SlickEdit(14.0.1.2),這似乎爲我工作。如果我確實需要所有對foo的引用,我必須在項目文件中執行「在文件中查找」。對於虛函數,它會詢問您是要引用全部還是隻從您選擇的類中引用。 – stefaanv 2010-03-25 11:01:55

+0

@stefaanv我在某個項目上使用右鍵菜單中的GoToRefference。不是「在文件中查找」只是用不同的選項進行文本搜索?我沒有看到任何內容選項。 – 2010-03-25 12:56:38

+0

是的,「轉到參考」只顯示對C1 :: foo的引用。 「在文件中查找」搜索文本,因爲我看不出其他方式顯示引用,因爲就SlickEdit而言,C1 :: foo和C2 :: foo之間唯一的相似之處是文本。 – stefaanv 2010-03-25 15:47:32

回答

2

我認爲Qt-Creator可以幫助你。新預覽版2.0中新增的功能很少。

+0

2.0是阿爾法,我正在尋找更穩定的東西,但是1.3.1的確出人意料的好! 10x – 2010-03-26 14:17:47

+0

我建議你在官方論壇上討論你的要求,或者在問題Q(http://qt.gitorious.org/qt-creator)上發佈它,以便它可以包含在2.0最終版本中。 – Sharique 2010-03-29 04:56:45

+0

10q,我會嘗試 – 2010-03-29 10:06:39

3

我認爲你可以使用Eclipse,主要是我認爲它將能夠做到你想要的,或者足夠接近。另外here'是它的搜索選項的簡要說明。

+0

10倍,我正在嘗試。如果我贏得OutOfMemory戰鬥,它可能會完成這項工作。 – 2010-03-25 12:38:01

1

不,我不認爲我們永遠不會看到是那些在C#或Java編輯器有兩個原因良好的實現:

1)預處理:

#ifdef _DEBUG 
#define FOO(x) C1(x).foo 
#else 
#define FOO(x) C2(x).foo 
#endif 

2)模板:

template<class C> void Method(C const& c) { 
    printf("%d", c.foo); 
} 

在這兩種情況下,很難確定哪個類實際被引用。

+0

我想我們最終會看到它。隨着像gccxml這樣的工具和像連續編譯這樣的概念變得越來越主流,編輯作者將更容易整合「正確」的上下文正確搜索。 話雖如此,我不認爲任何這樣的編輯器/進程在Linux上做「正確」的事情呢。 – 2010-03-26 08:35:23

+0

我想我在Visual Studio開發者博客上閱讀了關於它們的實現以及它爲什麼如此困難。如果我沒有記錯,他們已經使用編譯器來填充它們的符號索引,但這是不夠的,因爲解析必須非常容錯。在編輯過程中,大多數時候你的代碼不是格式良好的C++。這適用於所有語言。 – Sebastian 2010-03-26 09:04:17

0

我自己並沒有使用KDevelop,但我感覺它對源代碼進行了一些認真的解析,並且能夠通過編輯器訪問源代碼信息。它至少有一些先進的code assistant functionality

+0

所有的IDE都這樣做。 – 2010-03-25 10:59:58

+0

是的,我明白了。由於我不用C++編寫程序,也沒有使用KDevelop,所以我很害怕將其過度使用。通過閱讀關於等等的博客文章,我對該工具的印象是它非常好,並且高於平均水平。但我不知道。因此,「檢查出」答案。 – hlovdal 2010-03-25 17:55:21

0

你必須嘗試KDevelop 4,而不是舊的。

+0

我設法建立它,我會看看我能用它做什麼。 – 2010-03-26 12:17:50

0

你可以看看CodeBlocks [http://www.codeblocks.org/]。我剛開始使用它,但未針對您的要求進行測試。所以我現在不聲稱10X。但你可以試試看。它的開源和好的一個。

+0

是的,我已經嘗試過,但它似乎只是在尋找某些項目出現時進行文本搜索,我正在尋找更深入的代碼理解。除此之外,它看起來非常好。 – 2010-03-26 14:29:41

1

你有沒有試過Netbeans。它緊密的Eclipse競爭對手,它擁有所有功能,如Web開發,移動應用程序IDE,插件幾乎允許任何事情做。所有這些都具有較低的CPU和內存佔用。它確實解析了名字。

+0

我試過一次,不喜歡它,但現在它似乎更好。它確實顯示了使用情況。 10q,我會試一試。 – 2010-03-29 10:56:33

+0

我覺得如果Netbeans本身,人們通常會在第一眼看到擺動Swing主題。如果你改變你的本地主題,那麼它會更好看。 – Xolve 2010-03-29 12:10:23