sistematizacion procesos los habitacion diferencia concepto con como automatizar automatizacion c

procesos - ¿Cómo automatizo la búsqueda de las directivas#include no utilizadas?



como automatizar tu habitacion con arduino (5)

Podrías simplemente escribir una herramienta de línea de comando de "fuerza bruta" que comente los #includes uno por uno y verifique si la compilación todavía funciona. Avísame cuando lo tengas a funcionar. ; 0)

Normalmente, al escribir un código nuevo descubre que le falta un #include porque el archivo no se compila. Bastante simple, agregas el #include requerido. Pero luego refactoriza el código de alguna manera y ahora un par de directivas #include ya no son necesarias. ¿Cómo descubro cuáles ya no son necesarios?

Por supuesto, puedo eliminar manualmente algunas o todas las líneas de #include y volver a agregarlas hasta que el archivo vuelva a compilarse, pero esto no es realmente factible en un proyecto grande con miles de archivos. ¿Hay alguna herramienta disponible que ayude a automatizar la tarea?


Hay un plugin de Eclipse llamado includator que ayuda a administrar dependencias incluidas en proyectos C / C ++

http://includator.com/


Aquí está la macro VC6 de ''fuerza bruta'' que funciona en un solo archivo .cpp o .h abierto en el editor al comentar incluir incluir y ejecutar la compilación:

Sub RemoveNotUsedIncludes() ''Check if already processed; Exit if so ActiveDocument.Selection.FindText "//INCLUDE NOT USED", dsMatchFromStart IF ActiveDocument.Selection <> "" THEN ActiveDocument.Selection.SetBookmark MsgBox "Already checked" ActiveDocument.Selection.ClearBookmark EXIT SUB END IF ''Find first #include; Exit if not found ActiveDocument.Selection.FindText "#include", dsMatchFromStart IF ActiveDocument.Selection = "" THEN MsgBox "No #include found" EXIT SUB END IF Dim FirstIncludeLine FirstIncludeLine = ActiveDocument.Selection.CurrentLine FOR i=1 TO 200 ''Test build ActiveDocument.Selection.SetBookmark ActiveDocument.Selection = "//CHECKING... #include" Build ActiveDocument.Undo ActiveDocument.Selection.ClearBookmark IF Errors = 0 THEN ''If build failed add comment ActiveDocument.Selection.EndOfLine ActiveDocument.Selection = " //INCLUDE NOT USED" END IF ''Find next include ActiveDocument.Selection.EndOfLine ActiveDocument.Selection.FindText "#include" ''If all includes tested exit IF ActiveDocument.Selection.CurrentLine = FirstIncludeLine THEN EXIT FOR NEXT

End Sub

De caso, podría mejorarse para trabajar en un proyecto completo.


Puede usar PC-Lint / FlexeLint para hacer eso.

Inusualmente, no hay una versión de SO gratuita de la herramienta disponible.

Puede eliminar #includes pasando por referencia en lugar de pasar por valor y declarar hacia adelante. Esto se debe a que el compilador no necesita conocer el tamaño del objeto en el momento de la compilación. Sin embargo, esto requerirá una gran cantidad de trabajo manual en su nombre. Lo bueno es que reducirá tus tiempos de compilación.


Este artículo explica una técnica de eliminación de #include mediante el análisis de Doxygen. Es solo un script de Perl, así que es bastante fácil de usar.