ReSharper - บังคับให้ใช้เครื่องหมายปีกการอบเส้นเดี่ยว


101

ฉันสามารถกำหนดค่า ReSharper เพื่อแก้ไขรหัส C # ได้หรือไม่เมื่อไม่ได้ใช้วงเล็บปีกกาล้อมรอบบล็อกรหัสบรรทัดเดียวเช่นนี้:

if (blnSomeCondition)
   DoSomething();  // complain

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

ขอบคุณ


3
คำถามที่ดี แต่มีอะไรผิดปกติกับไวยากรณ์แรก? ไม่จำเป็นต้องดัดฟัน
คาห์

43
นักพัฒนาบางรายยืนยันว่าควรใส่วงเล็บปีกการอบ ๆ บล็อกโค้ดบรรทัดเดียวดีกว่าเนื่องจากสามารถอ่านได้มากขึ้นและดูแลรักษาได้มากขึ้น
Ryan Berger

33
นอกจากนี้ฉันเคยเห็นว่าหลายครั้งที่ไม่ใช้เครื่องมือจัดฟันดัดผมทำให้เกิดข้อบกพร่อง มีคนทำการเปลี่ยนแปลงเห็น if และเพิ่มบรรทัดใหม่โดยไม่ทราบว่าจะไม่ดำเนินการเป็นส่วนหนึ่งของเงื่อนไข มันบอบบาง แต่ได้เกิดขึ้นแล้ว
Hadi Hariri

2
ฉันไม่ค่อยมีปัญหากับรูปแบบแรก แต่ฉันเห็นว่ามันอาจนำไปสู่จุดบกพร่องในสถานการณ์ที่ Hadi กล่าวถึง ทีมงานของเราได้ตัดสินใจว่าเป็นมาตรฐานการเข้ารหัสที่เราต้องการบังคับใช้ซึ่งเป็นเหตุผลที่ฉันถามคำถามนี้
Booberry

5
ความชอบส่วนตัวของฉันคือไม่ใช้วงเล็บปีกกาสำหรับบรรทัดเดียว 'if's แต่ให้วาง' if 'และคำสั่งต่อไปนี้ไว้บนเส้นทางกายภาพเดียวกันเช่น' if (blnSomeCondition) Do Something (); '
Paul Ruane

คำตอบ:


148

ในเวอร์ชันใหม่ของ ReSharper (2016.x) ถูกย้ายไปยัง Code Style 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> Options> Languages> C #> Formatting Style> Braces Layout
  2. ตั้งค่า "Braces in" if-else "statement" เป็น "Use braces for multiline"
  3. หลังจากบันทึกการเปลี่ยนแปลงแล้วให้เลือกขอบเขตที่จะฟอร์แมต (อาจเป็นการเลือกรหัสไฟล์โฟลเดอร์โครงการโซลูชัน - อะไรก็ได้ที่คุณต้องการ)
  4. เลือก ReSharper> Tools> Cleanup Code
  5. กำไร.

โปรดจำไว้ว่า Code Cleanup ทำสิ่งต่างๆได้มากมายและไม่เพียง แต่เกี่ยวข้องกับการจัดรูปแบบโค้ดเท่านั้น (ดูรายละเอียดที่http://www.jetbrains.com/resharper/webhelp/Code_Cleanup__Index.html ) ดังนั้นควรใช้คุณลักษณะนี้อย่างชาญฉลาด


28

โซลูชันของ Gorohoroh อยู่ใกล้ แต่แทนที่จะเลือก "Use braces for multiline" ฉันต้องเลือก "เพิ่มวงเล็บปีกกา" เพื่อบังคับให้เพิ่มวงเล็บปีกกาในสถานการณ์แบบบรรทัดเดียว และฉันต้องตั้งค่านั้นในรายการแบบเลื่อนลงทั้งหกรายการภายใต้ "Force Braces" เพื่อจับสถานการณ์ทั้งหมด:

ข้อความแสดงแทน

สิ่งที่ฉันหวังไว้จริงๆคือสามารถตั้งค่า ReSharper ให้ทำการเตือนสีเหลืองหรือข้อผิดพลาดสีแดงเมื่อมีการละเมิดกฎ แต่ฉันยังไม่พบวิธีที่จะทำเช่นนั้น เพราะคุณพูดถูก Gorohoroh รหัส Cleanup ทำหลายสิ่งหลายอย่างและฉันต้องการมีตัวเลือกในการตรวจสอบและแก้ไขการละเมิดกฎทีละรายการ

ขอบคุณสำหรับความช่วยเหลือของคุณ!


8

สำหรับReSharper 2016/02/02

คุณควรแก้ไขโปรไฟล์ของคุณเพื่อล้างข้อมูล รายการที่เหมาะสมเรียกว่าเพิ่ม / ลบวงเล็บสำหรับงบเดียวใน "ถ้า-อื่น", "สำหรับ", "foreach", "ในขณะที่", "ทำในขณะที่", "การใช้งาน" รายการนี้สามารถพบได้ในรูปแบบรหัส C # =>รายการ

หากตรวจสอบรายการแล้วจะมีการเพิ่มเครื่องหมายปีกกา หากไม่เลือกเครื่องหมายวงเล็บจะถูกลบออก

หมายเหตุ: การเพิ่มใช้งานไม่ได้ในขณะนี้ (ไม่รู้ว่าทำไม - อาจเป็นเวอร์ชันใหม่ของ ReSharper) อย่างไรก็ตามหากคุณจะยกเลิกการเลือกรายการที่กล่าวถึงวงเล็บปีกกาที่มีอยู่รอบ ๆ คำสั่งเดียวจะไม่ถูกลบออก

UPD: แก้ปัญหาได้แล้วดูสองความคิดเห็นแรกใต้โพสต์นี้


2
ซึ่งใช้งานได้ในปี 2016.3.2 แตกต่างกันเล็กน้อย - ภายใต้ตัวเลือกให้ไปที่การแก้ไขโค้ด -> C # -> รูปแบบโค้ด -> วงเล็บปีกกา -> ในคำสั่ง "ถ้า"จากนั้นเลือก "บังคับใช้เสมอ" ภายใต้ค่ากำหนด ตัวเลือกอื่น ๆ ได้แก่ "ห้ามบังคับ" "บังคับใช้หากเนื้อหาเป็นแบบหลายบรรทัด" "บังคับใช้หากคำสั่งเป็นแบบหลายบรรทัด" ฯลฯ
Chait

ดี. ขอบคุณ! และหลังจากการตั้งค่าเหล่านี้การล้างที่อธิบายโดยฉันจะทำงานได้อย่างถูกต้อง
จอร์แดน


1

เพียงแค่หากสามารถช่วยคนอื่นในการประหยัดเวลาได้ในเครื่องเดียวของ บริษัท ของฉันการปฏิบัติตามคำแนะนำของ Sergey นั้นไม่เพียงพอแม้จะมีคุณภาพที่ดีในการโพสต์ของเขาก็ตาม

ในการตั้งค่าที่เกี่ยวข้อง (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.