2010-06-18 12 views
33

Estoy buscando una herramienta (preferiblemente, un plugin de Visual Studio) que muestre todos los archivos incluidos en un archivo dado y muestre todos los archivos incluidos por esos archivos, y así sucesivamente.¿Cómo puedo ver el gráfico C/C++ #include fácilmente?

+2

dupe? http://stackoverflow.com/questions/42308/tool-to-track-include-dependencies –

+0

Sí. Mi búsqueda fu me ha fallado. – CannibalSmith

+0

@JohanKotlinski, creo que el tema habla sobre el seguimiento de las dependencias no sobre cómo crear un gráfico, una diferencia importante de la OMI. –

Respuesta

9

Doxygen, con la ayuda de Graphviz, puede hacer eso. Primero necesita editar un archivo de configuración. Esto no será fácil la primera vez que lo haga, pero después no se necesita mucha edición.

+1

En realidad, es simple en la mayoría de los casos: utilice la GUI de Windows del Asistente de Doxygen para generarla o desde la línea de comando ejecute 'doxygen -g' para generar un' Doxyfile' predeterminado y luego asegúrese de tener los valores 'INCLUDE_GRAPH' y 'INCLUDED_BY_GRAPH' establecido en' SÍ'. Es posible que deba ejecutar Doxygen un par de veces y verificar el resultado para ajustar los parámetros. –

2

No en sus preferencias, pero doxygen lo hace bastante bien.

0

http://www.codeproject.com/KB/applications/includefinder.aspx

Esto no es un VS plug-in, pero puede ser un motor de arranque para su propia herramienta. Por lo que pude ver, solo lee proyectos de VC6, los VS más nuevos tienen un formato XML fácil de analizar. Lo que necesita son las rutas de inclusión predeterminadas para que la herramienta pueda encontrar los archivos incluidos. Alternativamente, podría proporcionar un cuadro de configuración para él en la GUI como entrada del usuario.

9

No exactamente lo que quiere, pero el compilador de Visual Studio (cl.exe) tiene una opción /showIncludes que le mostrará un árbol de los incluye al compilar un archivo.

Si desea esta información para un solo archivo, puede hacer clic derecho en el archivo en el Explorador de soluciones, seleccionar "Propiedades" y en la sección "Línea de comandos" simplemente agregar/mostrarIncluir a "Opciones adicionales" . (Tenga en cuenta que estoy usando VC++ 2005, por lo que puede ser diferente para las versiones más recientes).

La salida que obtiene es un poco ... intrincada, pero muestra lo que se incluye y en qué orden.

Por cierto, la misma característica en GCC y el compilador Intel C++ (mis versiones al menos) es -H.

4

Si está usando Visual Studio 2010 puede usar el nuevo Visualization and Modelling Feature Pack de Microsoft, que tiene una característica para generar un gráfico de inclusión. Sin embargo, esto solo está disponible a través de un subíndice de MSDN.

+0

Si es un paquete de características tan útil como parece, esta publicación merece al menos 100 votos positivos. –

+0

De las capturas de pantalla, el paquete de características de modelado parece una herramienta de ensueño. Sin embargo, no solo necesita una suscripción de MSDN sino también una Premium o Ultimate Visual Studio para calificar para la descarga ;-( – BuschnicK

+0

Y generalmente NO funciona para proyectos de C++. –

17

Primero, cinclude2dot.pl es una secuencia de comandos perl que analiza el código C/C++ y produce un gráfico de dependencia #include como un archivo de puntos para la entrada en graphviz.

http://www.flourish.org/cinclude2dot/

Si no desea seguir el camino de ese tipo de herramienta manual, a continuación, las manos hacia abajo por el ganador ahora es en mi opinión una herramienta conocida como "IncludeManager" de Profactor.

http://www.profactor.co.uk/includemanager.php

Hay una versión de prueba gratuita, y es impresionante. Es un plug-in para Visual Studio que está totalmente integrado, así que haga doble clic en algo aquí lo lleva al lugar donde está incluido allí.

Tooltip mouseovers le ofrece toda la información que le gustaría, y le permite profundizar, eliminar subárboles enteros que no le interesan, ver representaciones que no sean gráficos, recorrer una lista de coincidencias para esto y aquello , es maravilloso.

Si es rápido al respecto, puede refactorizar la estructura #include de proyectos grandes antes de que se agote la prueba.Aun así, no cuesta mucho, alrededor de $ 35 por licencia.

Por lo que hace, es casi perfecto. No solo # incluye gráficos, sino también las dependencias entre proyectos de archivos compartidos, el impacto en los tiempos de compilación, las propiedades detalladas en las grillas, perfecto.

+0

IncludeManager parece que hace el truco fácilmente, y es de bajo costo. Le daré una oportunidad. – Boinst

4

Puede probar el método sugerido por este Stack Overflow answer:

Hay una C/C++ -> Proyecto avanzado ajuste "muestra incluye". Eso generará el árbol. Se asigna al compilador switch /showIncludes

Cuestiones relacionadas