Làm cách nào để loại bỏ thông báo vi phạm quy tắc Đặt tên trong Visual Studio?


94

Tôi vừa cài đặt Visual Studio 2017. Khi tôi mở một trang web hiện có, tôi nhận được tất cả các loại thông báo cảnh báo, chẳng hạn như thông báo sau:

IDE1006 Vi phạm quy tắc đặt tên: Những từ này phải bắt đầu bằng ký tự viết hoa: swe_calc

Trong mã, nó được định nghĩa là:

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

Điều này cũng xảy ra với các điều khiển ASP.Net của tôi. Ví dụ về DropDownList:

IDE1006 Vi phạm quy tắc đặt tên: Những từ này phải bắt đầu bằng ký tự viết hoa: ddlMonth_SelectedIndexChanged

Làm cách nào để loại bỏ các loại cảnh báo này trong Visual Studio?


7
Chắc chắn gửi phản hồi này đến VS. 2017 là một phiên bản mới với các tính năng mới và đôi khi những tính năng này có thể bắt đầu quá mạnh. Phản hồi của bạn sẽ giúp điều chỉnh hành vi mặc định.
Jimmy

3
Nghe như một lỗi. Đây không chỉ là về các dự án cũ mà còn về các dự án mới, được tạo trong VS2017rc. VS tạo ra các tên điều khiển nó sau đó gắn cờ là tấn công ..
TaW

3
Tôi đã gặp lỗi 1006 này với trình xử lý nhấp chuột vào nút do MSVS tạo, "btnList_Click ()". Nói cách khác, MSVS2017 đang phàn nàn về một phương pháp do chính nó tạo ra ! Nó đột nhiên phàn nàn về một quy ước đặt tên đã có từ .Net 1.0 ! Haizz .. GIẢI PHÁP LÝ TƯỞNG : #pragma warning disable IDE1006. Điều này có lợi ích là, vì nó nằm trong mã nguồn, nó tự động có toàn bộ dự án (bạn không phải đồng bộ hóa bất kỳ cài đặt MSVS trên mỗi máy trạm).
paulsm4

Câu trả lời:


140

Đây là một tính năng có thể cấu hình mới, nếu bạn truy cập

Tùy chọn → Trình soạn thảo văn bản → Ngôn ngữ của bạn (Tôi đã làm C #) → Kiểu mã → Đặt tên

Trong đó, tôi đã đi đến Quản lý kiểu dáng, thêm Trường hợp lạc đà (nó ở trong đó nhưng bạn cần thêm nó vào có thể lựa chọn của mình): đi tới dấu "+", sau đó thêm quy tắc của bạn cho phù hợp.

Quan trọng : Đóng giải pháp của bạn và mở lại để các thay đổi có hiệu lực.

Ví dụ, tôi chỉ sử dụng Camel Case cho các phương pháp riêng tư. Vì vậy, tôi chọn Phương pháp riêng tư và yêu cầu Tạo kiểu cho cái mới mà tôi đã tạo "Trường hợp lạc đà" và đặt nó thành Đề xuất mức độ nghiêm trọng (tôi cũng đã quảng cáo nó lên đầu).

Các ứng dụng được tích hợp đều là "Đề xuất" nên bạn cũng có thể tắt Tin nhắn.


2
Đó chính xác là quy ước đặt tên mà chúng tôi sử dụng cho các phương thức private - cảm ơn! Bây giờ tôi chỉ cần tìm ra cách bật tính năng này cho tất cả mọi người mà không cần mọi người phải đặt tùy chọn này riêng lẻ ....
Matthew Watson

9
Một cách nhanh chóng để đến các tùy chọn này là Nhấp vào bóng đèn "Tác vụ nhanh", di chuột qua "Sửa lỗi vi phạm tên" và nhấp vào nút "Thay đổi tùy chọn kiểu".
Daren

5
Tôi vừa xóa các quy tắc
Paulustrious

2
Để chia sẻ như vậy thiết lập / quy tắc / phong cách với toàn bộ đội, tham khảo này: stackoverflow.com/questions/11684457/...
kmote

5
Toàn bộ tính năng Đặt tên dường như đã bị lỗi và không hoạt động trong bản phát hành Visual Studio 2019.
gpresland

27

Nếu bạn chỉ muốn ngăn chặn nó trong một số tệp hoặc khu vực, bạn có thể sử dụng như sau:

#pragma warning disable IDE1006

// the code with the warning

#pragma warning restore IDE1006

2
Đây có lẽ là giải pháp "lý tưởng"! Nó giải quyết vấn đề cho toàn bộ nhóm.
paulsm4

24

Nếu bạn cần loại bỏ những thông báo này, bạn cũng có thể chặn chúng.

nhập mô tả hình ảnh ở đây


1
Sự khác biệt giữa ngăn chặn chúng 'Trong nguồn' và 'Trong tệp đàn áp' là gì?
TylerH

3
@TylerH "Trong Nguồn" là tệp chứa cảnh báo đang được đưa ra. "Trong tệp đàn áp" là tệp được tạo để lưu trữ tất cả các cảnh báo của bạn.
MistaGoustan

14

Bạn có thể đổi tên phương thức và thêm tên vào thuộc tính với thuộc tính 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);

Tôi cũng có một hộp thả xuống có lỗi tương tự: 'ddlMonth_SelectedIndexChanged'. Tất cả các điều khiển asp.net của tôi có phải được đổi tên không?
SteveFerg

@SteveFerg tùy thuộc vào bạn - đó chỉ là một cảnh báo.
Daniel A. White

1
Tôi đã tìm càng nhiều. Tôi chỉ tự hỏi liệu có một tùy chọn nào đó ở đâu đó để tắt chúng ngoài việc "bỏ chọn" hộp Tin nhắn trong Danh sách lỗi hay không.
SteveFerg

5

Nếu bạn muốn bỏ qua hoặc hủy thông báo cảnh báo trong một phương pháp, bạn có thể sử dụng SuppressMessage từ không gian tên System.Diagnostics.CodeAnalysis :

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

Các Biện minh tài sản là không bắt buộc, nhưng nó đáng để chi tiêu một thời điểm viết một lý do, để cho đội ngũ bí quyết của bạn là mã được điều chỉnh và là ok.


2

Nếu bạn di chuột qua vi phạm quy tắc đặt tên, bạn có thể sử dụng Alt + Enter để hiển thị các kiểu đặt tên cho ngôn ngữ đó. Bạn cũng có thể sử dụng Công cụ -> Tùy chọn -> Trình soạn thảo văn bản -> {ngôn ngữ} -> Kiểu mã -> Đặt tên.

Đối với quy tắc camelCase trên Phương thức, bạn có thể thêm quy tắc mới và đặt quy tắc đó thành Camel Case. Khi bạn đóng tệp mã và mở lại, bạn sẽ không thấy cảnh báo đó nữa. Không chắc tại sao đây không phải là một tùy chọn mặc định, nhưng nó không phải trong trường hợp của tôi (sử dụng Visual Code 15.8). Tôi đã phải chỉnh sửa phong cách để phù hợp với tiêu chuẩn của công ty chúng tôi.

Cài đặt kiểu đặt tên mẫu C #


2

Điều này có thể được thực hiện bằng VS2017 & VS2019 bình thường bằng cách sử dụng .editorconfigtệp cài đặt, sử dụng quy tắc đặt tên: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference

Tệp có thể được tạo bằng tay hoặc trong VS2019, bạn có thể yêu cầu Visual Studio tạo nó cho bạn từ tùy chọn của bạn (tức là sau khi định cấu hình prefs của bạn như trong https://stackoverflow.com/a/41131563/131701 ), bằng cách nhấn tạo tệp cấu hình trình chỉnh sửa từ nút cài đặt.

tạo tệp cấu hình trình chỉnh sửa từ nút cài đặt

Ví dụ: các bộ quy tắc sau sẽ bật camelCase cho tất cả các phương thức không công khai và giữ các quy tắc đặt tên mặc định khác đi kèm với 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

vô hiệu hóa quy tắc. nhấp chuột phải vào thông báo lỗi và chọn mức độ nghiêm trọng không có

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.