วิธีกำจัดข้อความการละเมิดกฎการตั้งชื่อใน Visual Studio


98

ฉันเพิ่งติดตั้ง Visual Studio 2017 เมื่อฉันเปิดเว็บไซต์ที่มีอยู่ฉันได้รับข้อความเตือนทุกประเภทเช่นนี้:

IDE1006 การละเมิดกฎการตั้งชื่อ: คำเหล่านี้ต้องขึ้นต้นด้วยอักขระตัวพิมพ์ใหญ่: swe_calc

ในรหัสถูกกำหนดให้เป็น:

[System.Runtime.InteropServices.DllImport("swedll32.dll")]
public static extern Int32 swe_calc(double tjd, int ipl, Int32 iflag, IntPtr xx, IntPtr serr);

นอกจากนี้ยังเกิดขึ้นกับตัวควบคุม ASP.Net ของฉัน ดังตัวอย่างของ DropDownList:

IDE1006 การละเมิดกฎการตั้งชื่อ: คำเหล่านี้ต้องขึ้นต้นด้วยอักขระตัวพิมพ์ใหญ่: ddlMonth_SelectedIndexChanged

ฉันจะกำจัดคำเตือนประเภทนี้ภายใต้ Visual Studio ได้อย่างไร


7
ส่งคำติชมนี้ไปที่ VS. 2017 เป็นเวอร์ชันใหม่ที่มีคุณสมบัติใหม่และบางครั้งอาจเริ่มก้าวร้าวเกินไป คำติชมของคุณจะช่วยปรับพฤติกรรมเริ่มต้น
Jimmy

3
ฟังดูเป็นบั๊ก นี่ไม่ใช่แค่โครงการเก่า แต่ยังเกี่ยวกับโครงการใหม่ที่สร้างขึ้นใน VS2017rc VS สร้างชื่อการควบคุมจากนั้นตั้งค่าสถานะว่าไม่เหมาะสม ..
TaW

3
ฉันพบข้อผิดพลาด 1006 นี้กับตัวจัดการการคลิกปุ่มที่สร้าง MSVS "btnList_Click ()" กล่าวอีกนัยหนึ่ง MSVS2017 กำลังบ่นเกี่ยวกับวิธีการที่สร้างขึ้นเอง ! จู่ๆก็บ่นเกี่ยวกับหลักการตั้งชื่อที่มีมาตั้งแต่. Net 1.0 ! เฮ้อ .. #pragma warning disable IDE1006ทางออกที่ดี: สิ่งนี้มีข้อดีคือเนื่องจากอยู่ในซอร์สโค้ดจึงใช้ได้ทั้งโครงการโดยอัตโนมัติ (คุณไม่ต้องซิงโครไนซ์การตั้งค่า MSVS สำหรับเวิร์กสเตชันใด ๆ )
paulsm4

คำตอบ:


143

เป็นคุณสมบัติใหม่ที่กำหนดค่าได้หากคุณไปที่

ตัวเลือก→แก้ไขข้อความ→ภาษาของคุณ (ฉันทำ C #) →รูปแบบรหัส→การตั้งชื่อ

ในนั้นฉันไปที่จัดการสไตล์เพิ่มเคสอูฐ (อยู่ในนั้น แต่คุณต้องเพิ่มในรายการที่คุณเลือก): ไปที่เครื่องหมาย "+" จากนั้นเพิ่มกฎของคุณตามนั้น

สำคัญ : ปิดโซลูชันของคุณและเปิดใหม่เพื่อให้การเปลี่ยนแปลงมีผล

ตัวอย่างเช่นฉันใช้เคสอูฐสำหรับวิธีส่วนตัวเท่านั้น ดังนั้นฉันจึงเลือกวิธีส่วนตัวและต้องการรูปแบบใหม่ที่ฉันสร้าง "กรณีอูฐ" และตั้งค่าเป็นข้อเสนอแนะความรุนแรง (ฉันได้เลื่อนขั้นให้อยู่ด้านบนด้วย)

ในตัวเป็น "คำแนะนำ" ทั้งหมดเช่นกันดังนั้นคุณสามารถปิดข้อความได้


2
นั่นเป็นหลักการตั้งชื่อเดียวกับที่เราใช้สำหรับวิธีส่วนตัว - ขอบคุณ! ตอนนี้ฉันแค่ต้องหาวิธีเปิดใช้งานสิ่งนี้สำหรับทุกคนโดยที่คนอื่นไม่ต้องตั้งค่าตัวเลือกนี้ทีละคน ....
Matthew Watson

9
วิธีที่รวดเร็วในการเข้าถึงตัวเลือกเหล่านี้คือคลิกหลอดไฟ "Quick Actions" วางเมาส์เหนือ "แก้ไขชื่อละเมิด" แล้วคลิกปุ่ม "เปลี่ยนตัวเลือกรูปแบบ"
Daren

6
ฉันเพิ่งลบกฎ
Paulustrious

2
หากต้องการแชร์การตั้งค่า / กฎ / รูปแบบดังกล่าวกับทั้งทีมโปรดดูที่stackoverflow.com/questions/11684457/…
kmote

5
คุณลักษณะการตั้งชื่อทั้งหมดดูเหมือนจะถูกบั๊กและไม่สามารถใช้งานได้ใน Visual Studio 2019 รีลีส
gpresland

30

หากคุณต้องการระงับเฉพาะในบางไฟล์หรือบางพื้นที่คุณสามารถใช้สิ่งต่อไปนี้:

#pragma warning disable IDE1006

// the code with the warning

#pragma warning restore IDE1006

2
นี่น่าจะเป็นทางออกที่ "เหมาะ"! ช่วยแก้ปัญหาให้กับทั้งทีม
paulsm4

24

หากคุณต้องการกำจัดข้อความเหล่านี้คุณสามารถระงับข้อความเหล่านี้ได้

ป้อนคำอธิบายภาพที่นี่


1
อะไรคือความแตกต่างระหว่างการปราบปราม 'In Source' กับ 'In Suppression File'?
TylerH

3
@TylerH "In Source" คือไฟล์ที่มีการส่งคำเตือน "ในไฟล์ปราบปราม" คือไฟล์ที่สร้างขึ้นเพื่อเก็บคำเตือนทั้งหมดของคุณ
MistaGoustan

14

คุณสามารถเปลี่ยนชื่อวิธีการและเพิ่มชื่อให้กับแอตทริบิวต์ด้วยEntryPointคุณสมบัติ

[System.Runtime.InteropServices.DllImport("swedll32.dll", EntryPoint = "swe_calc")]
public static extern Int32 SweCalc(double tjd, int ipl, Int32 iflag, IntPtr xx, IntPtr serr);

ฉันยังมีช่องแบบเลื่อนลงที่ให้ข้อผิดพลาดเดียวกัน: 'ddlMonth_SelectedIndexChanged' การควบคุม asp.net ทั้งหมดของฉันต้องเปลี่ยนชื่อด้วยหรือไม่
SteveFerg

@SteveFerg ขึ้นอยู่กับคุณ - เป็นเพียงคำเตือน
Daniel

1
ฉันคิดว่ามาก ฉันแค่สงสัยว่ามีตัวเลือกที่จะปิดสิ่งเหล่านี้ได้หรือไม่นอกเหนือจาก "การยกเลิกการคลิก" ช่องข้อความในรายการข้อผิดพลาด
SteveFerg

5

หากคุณต้องการละเว้นหรือยกเลิกข้อความเตือนในวิธีการคุณสามารถใช้SuppressMessageจากระบบ namespace System.Diagnostics.CodeAnalysis :

[SuppressMessage("Microsoft.Design", "IDE1006", Justification = "Rule violation aceppted due blah blah..")]

สมเหตุสมผลคุณสมบัติเป็นตัวเลือก แต่ก็คุ้มค่าใช้จ่ายสักครู่เขียนเหตุผลเพื่อให้รู้ว่าทีมงานของคุณรหัสแก้ไขและเป็น ok


2

หากคุณวางเมาส์เหนือการละเมิดกฎการตั้งชื่อคุณสามารถใช้ Alt + Enter เพื่อแสดงรูปแบบการตั้งชื่อสำหรับภาษานั้น ๆ คุณยังสามารถใช้ Tools -> Options -> Text Editor -> {language} -> Code Style -> Naming

สำหรับกฎของ camelCase เกี่ยวกับวิธีการคุณสามารถเพิ่มกฎใหม่และตั้งค่าเป็น Camel Case เมื่อคุณปิดไฟล์โค้ดและเปิดขึ้นมาใหม่คุณจะไม่เห็นคำเตือนนั้นอีกต่อไป ไม่แน่ใจว่าเหตุใดจึงไม่ใช่ตัวเลือกเริ่มต้น แต่ไม่ใช่ในกรณีของฉัน (ใช้ Visual Code 15.8) ฉันต้องแก้ไขรูปแบบให้เข้ากับมาตรฐาน บริษัท ของเรา

ตัวอย่างการตั้งชื่อสไตล์การตั้งชื่อ C #


2

สามารถทำได้โดยใช้ VS2017 & VS2019 ปกติโดยใช้.editorconfigไฟล์การตั้งค่าโดยใช้กฎการตั้งชื่อ: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference

คุณสามารถสร้างไฟล์ด้วยมือหรือใน VS2019 คุณสามารถรับ Visual Studio เพื่อสร้างตามความชอบของคุณได้ (เช่นหลังจากกำหนดค่า prefs ของคุณตามที่https://stackoverflow.com/a/41131563/131701 ) โดยการกดปุ่ม สร้างไฟล์กำหนดค่าตัวแก้ไขจากปุ่มการตั้งค่า

สร้างไฟล์กำหนดค่าตัวแก้ไขจากปุ่มการตั้งค่า

ตัวอย่างเช่นชุดกฎต่อไปนี้จะเปิดใช้งาน camelCase สำหรับวิธีการที่ไม่ใช่สาธารณะทั้งหมดและเก็บกฎการตั้งชื่อเริ่มต้นอื่น ๆ ที่มาพร้อมกับ VS

#### Naming styles ####

# Naming rules

dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i

dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case

dotnet_naming_rule.private_method_should_be_camelcasestyle.severity = suggestion
dotnet_naming_rule.private_method_should_be_camelcasestyle.symbols = private_method
dotnet_naming_rule.private_method_should_be_camelcasestyle.style = camelcasestyle

dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case

# Symbol specifications

dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal
dotnet_naming_symbols.interface.required_modifiers = 

dotnet_naming_symbols.private_method.applicable_kinds = method
dotnet_naming_symbols.private_method.applicable_accessibilities = private, protected, internal, protected_internal
dotnet_naming_symbols.private_method.required_modifiers = 

dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal
dotnet_naming_symbols.types.required_modifiers = 

dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal
dotnet_naming_symbols.non_field_members.required_modifiers = 

# Naming styles

dotnet_naming_style.pascal_case.required_prefix = 
dotnet_naming_style.pascal_case.required_suffix = 
dotnet_naming_style.pascal_case.word_separator = 
dotnet_naming_style.pascal_case.capitalization = pascal_case

dotnet_naming_style.begins_with_i.required_prefix = I
dotnet_naming_style.begins_with_i.required_suffix = 
dotnet_naming_style.begins_with_i.word_separator = 
dotnet_naming_style.begins_with_i.capitalization = pascal_case

dotnet_naming_style.camelcasestyle.required_prefix = 
dotnet_naming_style.camelcasestyle.required_suffix = 
dotnet_naming_style.camelcasestyle.word_separator = 
dotnet_naming_style.camelcasestyle.capitalization = camel_case

0

ปิดการใช้งานกฎ คลิกขวาที่ข้อความแสดงข้อผิดพลาดและเลือกความรุนแรงเป็นไม่มี


0

สิ่งที่กฎนี้ยืนยันคือฟิลด์นั้นต้องเป็นส่วนตัว

คุณสามารถแปลงเป็นทรัพย์สินได้โดยการเพิ่ม {get; set;} หลังฟิลด์

สิ่งนี้ลบข้อผิดพลาดให้ฉัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.