2010-03-25 12 views
6

¿Hay un IDE compatible con C++ con REALMENTE búsqueda inteligente de referencias? Por "referencia" me refiero al uso de una clase (o su miembro), variable, función en todo el Proyecto o Área de trabajo.C++ IDE para Linux con búsqueda de referencia inteligente

Hay un montón de IDE que lo proporciona. Algunos de ellos parecen simplemente buscar el texto con el mismo nombre que da muchas cosas, otros son más inteligentes y verifican el contexto (como los límites de clase, el espacio de nombres) pero no son lo suficientemente precisos.

Lo mejor que he probado hasta ahora fue Visual SlickEdit, pero aún hay más que desear.

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

Por ejemplo, en esta situación en la búsqueda de referencias C1::foo yo no quiero C2::foo para ser mostrado también.

Entonces, ¿hay un IDE que sea tan inteligente?

Edit2

10x a todos por las respuestas hasta el momento.

Probé Eclipse, la búsqueda de referencia parece relativamente buena, pero se tarda 20 minutos en indexar el proyecto de tamaño medio y 4 veces de 5 se queda sin memoria y falla. Traté de aumentarlo y algunos otros consejos y se puso un poco mejor, pero aún bastante lento y molesto con estos bloqueos.

Probé KDevelop3, pero la característica mencionada en esta pregunta no es muy avanzada, parece ser que es muy avanzada la búsqueda de texto basado en grep.

Edit4

KDevelop4 - Traté de hacer que funcione, pero última beta es bastante inútil para proyectos makefile costumbre, yo era incapaz de hacer nada con ella.

Edit5
me sorprendió, pero Qt Creator hizo muy bien en mis pruebas. No parece crear algunos archivos de etiquetas/índices, pero de alguna manera logra mostrar con mucha precisión el uso de variables/funciones/clases. Lamentablemente, parece que no funciona muy bien con las plantillas, cuando se siguen las definiciones de funciones.

Ninguno de los IDE mencionados podría competir con Visual SlickEdit en el trabajo con referencias, funciones virtuales, etc. QT Creator fue el más cercano sin embargo, así que lo elegiré como respuesta a mi pregunta.

+0

Uso SlickEdit (14.0.1.2) y eso parece funcionar para mí. Tengo que hacer una "Buscar en archivos" en los archivos de proyecto si quiero todas las referencias a foo. Para funciones virtuales, le pregunta si desea referencias a todos o solo de la clase que seleccionó. – stefaanv

+0

@stefaanv Yo uso GoToRefference del menú del botón derecho sobre algún elemento. ¿No es "Buscar en archivos" solo búsqueda de texto con diferentes opciones? No vi ninguna opción de contenido allí. –

+0

Sí, "Ir a referencia" solo muestra referencias a C1 :: foo. "Buscar en archivos" busca texto porque no veo otra manera de mostrar referencias porque, en lo que respecta a SlickEdit, la única semejanza entre C1 :: foo y C2 :: foo es textual. – stefaanv

Respuesta

2

Creo que Qt-Creator puede ayudarlo. Se agregaron pocas características nuevas en la nueva vista previa 2.0.

+0

2.0 es alfa, estoy buscando algo más estable, pero 1.3.1 lo hizo sorprendentemente bien! 10x –

+0

Le sugiero que discuta su requisito en el foro oficial o lo publique en el número Q (en http://qt.gitorious.org/qt-creator) para que pueda incluirse en la versión 2.0 final. – Sharique

+0

10q, lo intentaré –

3

Creo que podría usar Eclipse, principalmente creo que podrá hacer lo que quiera, o casi lo suficiente. También here' s una breve descripción de sus opciones de búsqueda.

+0

10x, lo estoy intentando. Si gano la batalla OutOfMemory, podría hacer el trabajo. –

1

No y no creo que alguna vez ver implementaciones que son tan buenos como los de C# o Java editores por dos razones:

1) El preprocesador:

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

2) Plantillas :

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

En ambos casos, es difícil determinar a qué clase se hace referencia en realidad.

+0

Creo que lo veremos eventualmente. A medida que las herramientas como gccxml y conceptos como la compilación continua se vuelvan más convencionales, será más fácil para los autores del editor integrar búsquedas correctas de contexto "apropiadas". Habiendo dicho eso, no creo que ningún editor/proceso de este tipo haga las cosas "bien" en Linux todavía. –

+0

Creo que leí en el blog de Visual Studio Developer sobre su implementación y por qué es tan difícil. Si recuerdo correctamente, ya usan el compilador para completar su índice de símbolos, pero esto no es suficiente porque el análisis tiene que ser muy tolerante a las fallas. En la mayoría de las veces durante la edición, su código no está bien formado C++. Esto se aplica a todos los idiomas. – Sebastian

0

No he usado KDevelop, pero me da la impresión de que hace un análisis serio del código fuente y puede acceder a la información del código fuente a través del editor. Tiene al menos algunos avanzados code assistant functionality.

+0

Todos los IDEs hacen esto. –

+0

Sí, entiendo eso. Como no programo en C++ y no he usado KDevelop, tengo miedo de venderlo en exceso. Mi impresión de la herramienta al leer publicaciones de blog sobre etc. a lo largo del tiempo es que es muy buena y está por encima de la media en esto. Pero no sé Por lo tanto, una respuesta de "verifíquelo". – hlovdal

0

Tienes que probar KDevelop 4, no el antiguo.

+0

Logré construirlo, veré qué puedo hacer con él. –

0

Puede mirar CodeBlocks [http://www.codeblocks.org/]. Acabo de empezar a usarlo, pero no he probado su requisito. Entonces no reclamo 10X ahora. Pero puedes intentarlo. Es de código abierto y bueno.

+0

Sí, lo he intentado antes, pero parece que solo hace una búsqueda de texto al buscar apariciones de algún elemento, estoy buscando algo con una comprensión más profunda del código. Excepto que esto parece realmente agradable. –

1

¿Alguna vez ha probado Netbeans. Cerrar competidor de Eclipse tiene todas sus características como desarrollo web, ide de aplicaciones móviles, complementos para casi cualquier cosa que se pueda hacer. Todo esto con una menor huella de CPU y memoria. Y resuelve el nombre correctamente.

+0

Lo intenté una vez y no me gustó, pero ahora parece mejor de alguna manera. Y muestra el uso correctamente. 10q, lo intentaré. –

+0

Siento que la gente suele ser repulsiva del tema Swing a primera vista si Netbeans sí mismo. Si cambias a tu tema nativo, se vería mejor. – Xolve