2008-09-11 23 views
8

ReSharper La función de limpieza del código (con "reorder members" y "reformat code" activado) es realmente genial. Usted define una plantilla de diseño usando XML, luego una combinación de teclas simple reorganiza su archivo fuente completo (o carpeta/proyecto/solución) de acuerdo con las reglas que establece en la plantilla.ReSharper Code Cleanup/Reformat Code feature vs Versioning Control Systems

De todos modos, ¿cree que podría ser un problema con respecto a VCS como subversión, cvs, git, etc.? ¿Existe la posibilidad de que cause muchos conflictos no deseados?

Gracias.

Respuesta

16

Sí, definitivamente causará problemas. Además de crear conflictos que deben resolverse manualmente, cuando ingresa un archivo que ha sido reformateado, el VCS notará que casi todas las líneas han sido modificadas. Esto hará que sea difícil para usted o un compañero de equipo mirar hacia atrás en la historia y ver qué cambió cuando.

Dicho esto, si todos configuran automáticamente su código de la misma manera (es decir, distribuyen esa plantilla XML al equipo), entonces podría funcionar bien. Los problemas realmente solo surgen cuando no todos hacen lo mismo.

+10

Lo que recomiendo en estas situaciones es hacer cosas en dos partes. En un barrido, usted limpia el código y en el segundo realiza sus cambios. Dos mensajes de compromiso diferentes. De esta forma, es fácil deshacer lo que hiciste * y * saber qué cambiar con tus arreglos. Comprometerse con demasiadas cosas en un commit múltiple es una buena práctica, en mi opinión. Permite que otros sepan el qué y el por qué * mucho * más fácil. –

2

Definitivamente puede causar conflictos, por lo que me aseguraré de no formatear archivos completos si hay personas trabajando en ellos en paralelo.

0

Definitivamente podría causar conflictos.

Si desea utilizar esto en un entorno multiusuario, la configuración de Resharper debe formatear su código según un conjunto de estándares que se aplican en su organización independientemente de si los usuarios utilizan Resharper o no.

De esta manera está utilizando la herramienta para asegurarse de que su propio código cumpla con los estándares, y no aplique sus preferencias a la base de códigos completa.

0

Acepto las respuestas anteriores que afirman que los conflictos son posibles e incluso probables.

Si está planificando reformatear el código, al menos asegúrese de no mezclar las comprobaciones de formateo con las que cambian la función del código real. De esta forma, las personas pueden omitir los registros anteriores que son simples reformateos. También es una buena idea asegurarse de que todos sepan que se está formateando para que puedan objetar si tienen un trabajo continuo en esa área.

7

Estoy esperando un IDE o un editor que siempre guarde el código fuente usando algunas reglas de formato de línea de base, pero permite que cada desarrollador individual muestre y edite el código en su propio formato preferido. De esa manera puedo poner mi abrazadera abierta al comienzo de la siguiente línea y no al final de la línea actual donde todos los paganos parecen pensar que va.

Supongo que estaré esperando por mucho tiempo.

2

Puede usar StyleCop para hacer cumplir un conjunto completo de normas que prácticamente obliga a todos a utilizar los mismos estilos de diseño. Luego, todo lo que necesita hacer es desarrollar una especificación de estilo de código ReSharper que coincida con esto y distribuirla al equipo.

Todavía estoy esperando someone else to do this, y para JetBrains para aclarar todos los detalles molestos que no son totalmente compatibles, a fin de permitir que ReSharper básicamente garantice el cumplimiento completo de StyleCop.

7
  • Sólo volver a formatear la solución completa vez
  • y asegúrese de que todos los desarrolladores está utilizando ReSharper
  • y asegúrese de que el formato se comparten opciones y versionado (opciones para compartir estilo de código)
0

Estamos trabajando en algo para trabajar con refactores en el nivel del código fuente. Lo llamamos Xmerge, y ahora es parte de Plastic. Es solo un primer acercamiento, ya que estamos trabajando en soluciones más avanzadas. Verifíquelo here.

0

Puede ser una buena idea escribir un script para ver todas las versiones en el historial de control de origen, aplicar el código de limpieza y luego verificarlo en un nuevo repositorio. Luego usa ese repositorio para todo tu trabajo en el futuro.