2009-08-17 11 views
27

Nota para los empleados de Google, esta pregunta es un poco fuera de fecha que la función solicitada es ahora compatible con la versión actual de ReSharper 2017.3.1formato ReSharper: alinear la igualdad de operandos

me gusta el formato mi código para alinear el lado derecho de los operandos iguales.
Como aquí:

bool canRead  = false; 
bool canReadClass = true; 
string className = boType.Name; 

he interruptor para ReSharper recientemente y me pareció muy útil, pero no puedo encontrar la opción que me permite código de formato en la forma descrita.

¿Sabes si hay tal opción/complemento?
¿Quizás conozca una solución que no sea ReSharp que lo permita?

EDIT:
Cómo decidir qué parte del código se alinea?
Mi convención es alinear todas las variables en el mismo bloque.
Por "bloque" quise decir parte del código no dividido por líneas vacías.

por ejemplo

// First block 
int  count  = 10; 
string name  = "abc"; 
bool  calculate = true; 
..... 
..... 
// Second block 
MyOwnType myType = new MyOwntype(); 
int   count = 10; 

EDITAR -2
He abierto R# ticket para esto. Si alguien está interesado please vote!

+0

Nota para Googlers, ReSharper 2017.3.1 es compatible con esta característica – MickyD

Respuesta

1

Por lo que sé, esto no es posible con Resharper.

+0

Nota para Googlers, esta es información actualmente desactualizada. ReSharper 2017.3.1 es compatible con esta función – MickyD

10

No existe (actualmente) forma de hacerlo de la caja en ReSharper. Afortunadamente, ReSharper tiene una API de extensibilidad muy rica (aunque poco documentada). He pasado mucho tiempo con Reflector tratando de resolver las cosas.

Utilizamos una pauta de alineación similar para los miembros de la clase en una empresa para la que trabajo (al extremo, también alineamos los parámetros del método). Escribí un complemento para ReSharper para ayudarme a hacer justamente eso. Es un módulo de "código de limpieza", que se ejecuta en algún momento durante la limpieza del código (Ctrl - E,Ctrl - F ) y alinea el código para usted. También hace la clase sealed, si es posible.

Algunos ejemplos:

parámetros del método:

public void DoSomething(string  name, 
         int   age, 
         IEnumerable coll) 

(que tendrá que cambiar Wrap parámetros formales a Chop siempre en Opciones-> Formato Style-> Line Breaks and Wrapping para que esto funcione correctamente)

Constantes:

private const int RESOURCEDISPLAYTYPE_DOMAIN = 0x00000001; 
private const int CONNECT_COMMANDLINE  = 0x00000800; 
private const int CONNECT_INTERACTIVE  = 0x00000008; 
private const string RESOURCE_NAME    = "Unknown"; 


se puede descargar el código fuente de mi SkyDrive.
Editar Parece que he perdido el acceso a ese SkyDrive y también perdí los archivos. Esto fue antes de github :(

Tenga en cuenta que necesitará varias cosas para compilar/depurarlo:

  1. actualización de la ficha Command Line Arguments en Debug en Project Properties con la ruta correcta de la DLL de salida :

    /ReSharper.Plugin "X:\<projects>\MyCompany.CodeFormatter\MyCompany.CodeFormatter\bin\Debug\MyCompany.CodeFormatter.dll"

    Esto permite depurar el plugin a través de F5, y será instala automáticamente en plugins de ReSharper en el nuevo instancia de Visual Studio que será abierta.

  2. El complemento es para ReSharper 4.5 y hace referencia a los archivos DLL de esta versión. Si instaló ReSharper en cualquier otro lugar excepto C:\Program Files\JetBrains\ReSharper, tendrá que corregir las referencias.
  3. Esto no se alinea las variables dentro de los métodos, pero no debería ser difícil añadir :)

Después de instalar esta, basta con ejecutar Code Cleanup para fijar su alineación (Nunca tuve una respuesta de JetBrains sobre cómo para hacer esto durante el formato de llave/punto y coma, desafortunadamente).

Asamblea pasó a llamarse a proteger a los inocentes :)

Buena suerte!

+0

¡Muchas gracias por compartir su solución! Realmente aprecio! BTW He compilado el código, he cambiado la línea de cmd para señalar mi dll, pero parece que no está instalado después de F5. ¿Qué estoy haciendo mal? – Maciej

+0

Bien - He copiado la solución a C: \ drive y ahora parece funcionar - ¡voy a probarlo ahora! – Maciej

+0

Acabo de probar y el complemento funciona como se esperaba. Gracias. Desafortunadamente (como usted mencionó) no alinea variables dentro de los métodos. Miré rápidamente su código y no es tan fácil para mí agregar esto. Necesita aprender más sobre la semántica de RS. Pero definitivamente intentaré y compartiré la comunidad si lo hice. :) – Maciej

10

Creo que vale la pena señalar que el Visual Studio Productivity Power Tools tiene una función Alinear asignaciones. Aquí hay un enlace al Visual Studio 2013 Productivity Power Tools.

+0

Wow. Esto parece ser lo que he buscado. Lamentablemente no tenemos VS2010 en mi corp :( – Maciej

+0

El código fuente de esta extensión también está disponible. Consulte el enlace de la Galería VS http://visualstudiogallery.msdn.microsoft.com/en-us/0cc34d69-c6f1-41e3-ac6e-5de071b3edc8 –

+0

Daría este +100 si pudiera. Gracias por esto. –

8

Puede probar esto: Code Alignment

Soporta

  • Alinear ... (diálogo)
  • Alinear por la posición ... (diálogo)
  • Alinear Igual
  • Alinear por m_
  • Alinear por "
  • Al ir por.
  • Align por Space
+1

Esto se ve bien. La única desventaja que encontré es que usa espacios para alinear pero prefiero TABs ... – Maciej

+6

Las pestañas no son buenas para esto, porque si alguien más tiene diferentes ancho de las pestañas, no estará alineado. Las pestañas solo son buenas al comienzo de la línea. – Andrej

1

Productivity Power Tools 2012 también tiene un comando para esto: ctrl-alt-]

Otros extras son, evidentemente, allí también.

+0

Sé que esto es viejo. Me acabo de enterar de esto. Ya tenía instaladas las herramientas eléctricas, pero no sabía que tenía la alineación Lo encontré en la configuración, pero no en la tecla de acceso directo. Eso es grandeza. – fizch

Cuestiones relacionadas