2011-03-09 21 views
12

Nos gustaría ser capaz de cambiar el formato de C++ bloques/funciones de código directamente desde el IDE de Visual Studio, por lo que los desarrolladores pueden fácilmente asegurar que el nuevo código insertan adhiere a las directrices de formato.Reformulación de código fuente avanzado (C++) con Visual Studio?

he encontrado la Artistic Style tool, que cubre más o menos las características que íbamos a necesitar. Sin embargo, solo puede funcionar en archivos completos de la CLI, por lo que no es muy útil para lo que queremos usar. (El formateo de archivos enteros nunca es lo que queremos [a].)

Visual Studio (2005) tiene funciones de formato automático limitadas, pero AFAICS, en su mayoría se trata de la sangría correcta, que es un poco insuficiente.

Así que mi pregunta es si hay alguna herramienta que pueda hacer un reformateo avanzado en una selección del VS IDE, o tal vez si hay un complemento VS IDE haciendo uso de AStyle?

Editar: La pregunta vinculada a una herramienta recomienda - ProFactor's StyleManager - ¿existen otras herramientas de este tipo?

Nota [a]: El reformateo archivos enteros o árboles enteros de proyectos sólo es útil para proyectos personales o de confirmaciones código inicial, en mi humilde opinión. Para un proyecto de equipo (grande), el reformateo general arruinará el historial de cambios de archivos o líneas dentro de los archivos, por lo que será mucho más difícil hacer un seguimiento de quién ha cambiado qué.

+1

Personalmente ejecuto 'astyle' periódicamente en todo el proyecto. Esto ayuda a mantener un estilo constante en todos los archivos fuente. –

+0

http://stackoverflow.com/questions/1663794/visual-studio-unmanaged-c-code-formatter/1663828#1663828 –

+2

Para su nota [a]: Nunca me encontré con tales problemas. El mecanismo de diferencia utilizado por la mayoría del sistema de control de versiones (al menos en Linux) es tolerante al desplazamiento de líneas. Y astyle se puede configurar para no cambiar las marcas de tiempo de los archivos que toca, para que no se arruine el sistema de compilación. Siempre que ejecute astyle antes de comprometerse (o antes de construir) cada vez, no hay absolutamente ningún problema. –

Respuesta

2

me encontré con un blog que describe cómo integrar un formateador de código externo con Visual Studio: Per-Project Code Formatting in Visual Studio

(. ..) a continuación, puede configurar el IDE (s) de modo que su formato predeterminado comandos en lugar de utilizar Uncrustify. En Visual Studio , por ejemplo, se puede establecer un herramienta externa. Suponiendo uncrustify.cfg está al lado del archivo de solución, luego la línea de comando

-c $(SolutionDir)uncrustify.cfg --no-backup "$(ItemPath)"

se formatear el archivo de fuente de corriente. A continuación, puede asignar un mapa de teclado (o reasignar el uno para Edit.FormatDocument, como yo) para acceso rápido.

Yo no lo he probado, pero parece reducirse a configurar el formateador (por ejemplo AStlye/Uncrustify) como una herramienta externa en Visual Studio para poder llamar en un archivo de origen desde el IDE.

Con sólo por archivo, pero parece una de las mejores ideas que he encontrado.

1

Parece que ya hay una respuesta para eso https://stackoverflow.com/questions/1663794/visual-studio-unmanaged-c-code-formatter

también. Sé que en KDevelop y code :: blocks tienen buenos reformadores de código de C++ y se puede personalizar el estilo de manera muy efectiva. Me gusta tanto .. pero Code :: Blocks se bloquea constantemente en mí en este momento :(

+0

Ya mencioné esta pregunta/respuesta en un enlace de comentario y una edición de pregunta antes de su respuesta. –

0

La pregunta es un poco antigua, pero el problema no es.

Uso un VS macro para lavar el código C++ a través de uncrustify y activarlo con un atajo de teclado (ALT + MAYÚS + U, mi preferencia).La macro se ejecuta sin contrastar en el documento del editor actualmente activo, envía la salida a un archivo temporal y luego reemplaza el texto del editor actual con el resultado de no crítica.

Obviamente, este flujo de trabajo cambia todo el código en el archivo, pero el uso frecuente del atajo mantendrá su código limpio y agradable. ¿Es concebible que la macro se active automáticamente cuando cambia n% del texto del editor? Lo dejo a los gurús de EnvDTE.

Cuestiones relacionadas