2010-09-01 20 views
75

¿Puedo configurar ReSharper para fijar el código C# cuando llaves no se usan para rodear un bloque de código de una sola línea, así:ReSharper - Fuerza llaves en torno sola línea

if (blnSomeCondition) 
    DoSomething(); // complain 

if (blnSomeOtherCondition) 
{ 
    DoSomethingElse(); // don't complain 
} 

Gracias

+1

Buena pregunta, pero ¿qué pasa con la primera sintaxis? Curl llaves son innecesarias. – Micah

+28

Algunos desarrolladores argumentan que es mejor práctica incluir llaves en torno a un bloque de código de una sola línea, ya que puede ser más legible y más fácil de mantener. –

+22

Además, he visto cuántas veces no usar llaves de curling ha provocado errores. Alguien hace un cambio, ve el if y agrega una nueva línea, sin darse cuenta de que no se ejecutará como parte del condicional. Es sutil pero ha sucedido. –

Respuesta

28

La solución de Gorohoroh está cerca, pero en lugar de seleccionar "Utilizar llaves para líneas múltiples" tuve que seleccionar "Añadir llaves" para forzarla a agregar llaves en el escenario de una sola línea. Y tuve que establecer que en los seis menús desplegables bajo "Force Los apoyos" para atrapar todos los escenarios:

alt text

lo que realmente estaba esperando era ser capaz de establecer ReSharper que hacer una advertencia de color amarillo o error rojo cuando se violó la regla, pero no he encontrado una manera de hacerlo. Porque tienes razón, Gorohoroh, Cleanup Code hace un montón de cosas y me gustaría tener la opción de mirar y corregir las infracciones de las reglas de a una por vez.

Gracias por su ayuda!

+1

Esta opción es correcta pero se ha movido – Sergey

33

Ryan es correcto (tenga en cuenta que su enlace se refiere a la ayuda de R # 2.0). El procedimiento específico es como sigue:

  1. Ir a ReSharper> Opciones> Idiomas> C#> formato de estilo> Los apoyos Disposición
  2. Set "Apoyos en "if-else" declaración" a "Use soportes de líneas múltiples"
  3. Después de guardar los cambios, seleccione un alcance para reformatear (podría ser una selección de código, archivo, carpeta, proyecto, solución, cualquier cosa que desee).
  4. Elija ReSharper> Herramientas> Código de limpieza.
  5. Beneficio.

Recuerde que código de limpieza hace muchas cosas y no sólo está relacionada con el formato de código (ver detalles en http://www.jetbrains.com/resharper/webhelp/Code_Cleanup__Index.html), a fin de utilizar la función con prudencia.

+0

+1 para el Paso 5 (pero creo que se supone que es el paso 3;) –

106

En la nueva versión de ReSharper (2016.1.1) se ha movido al estilo de código. ReSharper 2016.1.1

UPD1: para ReSharper 2017,1 y 2017,2 ReSharper 2017.1.2

8

Para ReSharper 02/02/2016.

Debe editar su perfil para limpiarlo. El elemento adecuado se llama Agregar/Eliminar llaves para declaraciones individuales en "if-else", "for", "foreach", "while", "do-while", "using". Este artículo se puede encontrar dentro del artículo C# => Code styles.

Si se marca el elemento, se agregarán llaves; si no se selecciona, se eliminarán las llaves.

Nota: la adición no funciona ahora (no sé por qué - tal vez, la versión demasiado reciente de ReSharper). Sin embargo, si deselecciona el elemento mencionado, no se eliminarán las llaves existentes alrededor de las declaraciones individuales.

UPD: El problema está resuelto, consulte los primeros dos comentarios debajo de esta publicación.

+2

Esto funciona en 2016.3.2 de forma un poco diferente: en Opciones, vaya a _ Edición de Código -> C# -> Estilos de código -> Refrenamientos -> En "Si" instrucción_, y luego elija "Aplicar siempre" en Preferencia. Otras opciones son "No aplicar", "Aplicar si el cuerpo es multilínea", "Aplicar si la instrucción es multilínea", etc. – Chaithanya

+0

Agradable. ¡Gracias! Y después de estos ajustes, la limpieza descrita por mí funciona correctamente. – Jordan

Cuestiones relacionadas