2010-09-01 18 views
75

Posso configurare ReSharper per risolvere codice C# quando parentesi graffe non sono abituati a circondare un blocco di codice a riga singola, in questo modo:ReSharper - forzare parentesi graffe intorno singola linea

if (blnSomeCondition) 
    DoSomething(); // complain 

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

Grazie

+1

Buona domanda, ma cosa c'è di sbagliato nella prima sintassi? Le parentesi graffe non sono necessarie. – Micah

+28

Alcuni sviluppatori sostengono che è preferibile includere parentesi graffe attorno a un blocco di codice a riga singola poiché può essere più leggibile e più gestibile. –

+22

Inoltre, ho visto quante volte non utilizzare le parentesi graffe ha portato a bug. Qualcuno apporta una modifica, vede il se e aggiunge una nuova riga, non rendendosi conto che non verrà eseguita come parte del condizionale. È sottile ma è successo. –

risposta

28

La soluzione di Gorohoroh è chiusa, ma invece di selezionare "Usa controventi per multiline", ho dovuto selezionare "Aggiungi controventi" per forzare l'aggiunta delle parentesi nello scenario a linea singola. E ho dovuto impostare che in tutti e sei i menu a discesa sotto "forza Bretelle" per catturare tutti gli scenari:

alt text

Quello che speravo davvero per doveva essere in grado di impostare ReSharper per fare un avvertimento giallo o errore rosso quando la regola è stata violata, ma non ho trovato un modo per farlo. Perché hai ragione, Gorohoroh, Cleanup Code fa un sacco di cose e mi piacerebbe avere l'opzione di guardare e correggere le violazioni delle regole una alla volta.

Grazie per il vostro aiuto!

+1

Questa opzione è corretta ma è stata spostata – Sergey

33

Ryan è corretto (notare tuttavia che il suo collegamento si riferisce alla guida R # 2.0). La procedura specifica è la seguente:

  1. Vai ReSharper> Opzioni> Lingue> C#> formattazione dello stile> Bretelle layout
  2. Set "berretti in "if-else" dichiarazione" a "utilizzare le parentesi per multilinea"
  3. Dopo aver salvato le modifiche, selezionare un ambito da riformattare (potrebbe essere una selezione di codice, file, cartella, progetto, soluzione - tutto ciò che si desidera).
  4. Scegliere ReSharper> Strumenti> Codice pulizia.
  5. Profitto.

Ricordate che codice Cleanup fa molte cose e non sono solo legati alla formattazione del codice (vedi dettagli a http://www.jetbrains.com/resharper/webhelp/Code_Cleanup__Index.html), in modo da utilizzare la funzionalità di saggezza.

+0

+1 per il passaggio 5 (ma penso che dovrebbe essere il passaggio 3;) –

106

Nella nuova versione di ReSharper (2016.1.1) è stato spostato nello stile codice. ReSharper 2016.1.1

UPD1: per ReSharper 2017,1 e 2017,2 ReSharper 2017.1.2

8

Per ReSharper 2016/02/02.

È necessario modificare il profilo per la pulizia. L'articolo corretto è chiamato Aggiungi/Rimuovi le parentesi graffe per le singole istruzioni in "if-else", "for", "foreach", "while", "do-while", "using". Questo articolo può essere trovato all'interno dell'articolo C# => Codice stili.

Se l'elemento è selezionato, verranno aggiunte le parentesi graffe; se deselezionato, le parentesi graffe verranno rimosse.

Nota: l'aggiunta non funziona ora (non so perché - forse, versione troppo recente di ReSharper). Tuttavia, se deselezionerai l'elemento menzionato, le parentesi esistenti attorno alle singole istruzioni non verranno rimosse.

UPD: il problema risolto, vedere i primi due commenti sotto questo post.

+2

Questo funziona in 2016.3.2 un po 'diversamente - in Opzioni, vai a _Code Editing -> C# -> Stili di codice -> Braces -> In "If" statement_, quindi selezionare "Enforce always" in Preference. Altre opzioni sono "Do not enforce", "Enforce if body is multi-line", "Enforce if statement is multi-line", ecc. – Chaithanya

+0

Nice. Grazie! E dopo queste impostazioni, la pulizia descritta da me funziona correttamente. – Jordan

Problemi correlati