ReSharper-単一の線の周りに中括弧を強制します


100

次のように、中かっこを使用せずに1行のコードブロックを囲む場合に、C#コードを修正するようにReSharperを構成できますか?

if (blnSomeCondition)
   DoSomething();  // complain

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

ありがとう


3
良い質問ですが、最初の構文の何が問題になっていますか?カールブレースは不要です。
Micah

43
一部の開発者は、1行のコードブロックを中かっこで囲むと読みやすくなり、保守しやすくなるため、より良い方法であると主張しています。
Ryan Berger

33
さらに、カーリングブレースを使用しないとバグが発生することが何度かありました。誰かが変更を加え、ifを確認して新しい行を追加しますが、条件の一部として実行されないことに気付きません。微妙ですが起こりました。
Hadi Hariri、2009

2
私は最初の形式で本当に問題はありませんが、ハディが述べたシナリオでバグにつながる可能性があることがわかります。私たちのチームは、これを適用したいコーディング標準であると決定しました。そのため、私が質問します。
Booberry

5
私の個人的な好みは、単一の行 'if'に中括弧を使用するのではなく、 'if'と次のステートメントを同じ物理行に配置することです(例: 'if(blnSomeCondition)Do Something();')。
ポールルアン

回答:


148

ReSharper(2016.x)の新しいバージョンでは、コードスタイルに移動しました。 ReSharper 2016.1.1

UPD1:ReSharper 2017.x用 ReSharper 2017.1.2

UPD2:ReSharper 2018.x用 ReSharper 2018.1

UPD3:ReSharper 2019.x用 ReSharper 2019.1

UPD4:ReSharper 2020.xの場合 ここに画像の説明を入力してください


35

Ryanは正しいです(ただし、彼のリンクはR#2.0ヘルプを参照していることに注意してください)。具体的な手順は次のとおりです。

  1. ReSharper>オプション>言語> C#>書式設定スタイル>ブレースレイアウトに移動します。
  2. 「if-else」ステートメント内のブレースを「複数行にブレースを使用」に設定
  3. 変更を保存したら、再フォーマットするスコープを選択します(コードの選択、ファイル、フォルダー、プロジェクト、ソリューションなど、何でもかまいません)。
  4. ReSharper> Tools> Cleanup Codeを選択します。
  5. 利益。

コードのクリーンアップは多くのことを行い、それらはコードのフォーマットに関連するだけではない(http://www.jetbrains.com/resharper/webhelp/Code_Cleanup__Index.htmlで詳細を参照)ので、機能を賢く使用することを忘れないでください


28

Gorohorohの解決策は近いですが、[複数行に中かっこを使用]を選択する代わりに、[中かっこを追加]を選択して、単線シナリオで中かっこを強制的に追加する必要がありました。そして、すべてのシナリオをキャッチするために、 "Force Braces"の下の6つのドロップダウンすべてにそれを設定する必要がありました。

代替テキスト

私が本当に望んでいたのは、ルールに違反したときに黄色の警告または赤色のエラーを表示するようにReSharperを設定できることでしたが、それを行う方法が見つかりませんでした。あなたが正しいので、Gorohoroh、Cleanup Codeは多くのことを行い、一度に1つずつルール違反を確認して修正するオプションが欲しいのですが。

ご協力いただきありがとうございます!


8

ReSharperの2016年2月2日

クリーンアップするためにプロファイルを編集する必要があります。適切なアイテムは、「if-else」、「for」、「foreach」、「while」、「do-while」、「using」の単一ステートメントのブレースの追加/削除と呼ばれます。このアイテムは、C#=> Code stylesアイテム内にあります。

アイテムがチェックされている場合、中括弧が追加されます。オフにすると、中括弧が削除されます。

注:現在、追加は機能しません(理由がわからない-おそらく、ReSharperの新しすぎるバージョン)。ただし、上記の項目のチェックを外すと、単一のステートメントを囲む既存の括弧は削除されません。

UPD:問題は解決しました。この投稿の下の最初の2つのコメントを参照してください。


2
これは2016.3.2で少し異なります。[オプション]で、[コード編集]-> [C#]-> [コードスタイル]-> [中かっこ]-> [Ifステートメント ]に移動し、[設定]で[常に適用]を選択します。その他のオプション等「文は複数行であれば強制」、「体が複数行ある場合は強制」、「強制しない」です
Chait

いいね。ありがとうございました!これらの設定の後、私が説明したクリーンアップは適切に機能します。
ジョーダン


1

私の会社の1台のマシンで、他の誰かが時間を節約するのに役立つ場合は、彼の投稿の質が高いにもかかわらず、セルゲイのアドバイスに従うだけでは不十分でした。

懸念のあるセットアップ(VS2017、R#2019、どちらも最新)では、R#側のこれらの設定はすでに良好でしたが、Visual Studioオプションでも変更する必要がありました。

  • [オプション]ウィンドウで、[テキストエディター]-> [C#]-> [コードスタイル]-> [書式設定]-> [全般]に移動します。
  • チェック「フォーマット中に追加のコードのクリーンアップを実行」と「追加/シングルライン制御文の削除括弧を

0

さてまた感激。新しい場所は、バージョンの構文スタイルの下にありReSharper 2020.01ます。

に行く ReSharper > Options > Code Editing > C# > Syntax Style > Braces

ここからのスクリーンショットです ReSharper 2020.01

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.