Thiếu nhận xét XML cho loại hoặc thành viên hiển thị công khai


381

Tôi nhận được cảnh báo này: "Thiếu nhận xét XML cho loại hoặc thành viên hiển thị công khai".

Làm thế nào để giải quyết điều này?


8
Tôi cũng thấy điều này trong Visual Studio. Bất cứ ai cũng biết phần mềm cảnh báo này đến từ đâu? Phong cách Cop? Fx sao? Phân tích mã? Làm thế nào tôi có thể tắt nó?
Đại tá Panic

Câu trả lời:


668

5 lựa chọn:

  • Điền vào các ý kiến ​​tài liệu (tuyệt vời, nhưng tốn thời gian)
  • Tắt việc tạo bình luận (trong thuộc tính dự án)
  • Vô hiệu hóa cảnh báo trong thuộc tính dự án (trong 'Thuộc tính dự án' đi đến Thuộc tính dự án -> Xây dựng> "Lỗi và cảnh báo" (phần), Cảnh báo loại bỏ (hộp văn bản), thêm 1591 (danh sách được phân tách bằng dấu phẩy)). Theo mặc định, nó sẽ thay đổi Cấu hình hoạt động, xem xét thay đổi cấu hình thành Tất cả.
  • Sử dụng #pragma warning disable 1591để vô hiệu hóa cảnh báo chỉ đối với một số bit mã (và #pragma warning restore 1591sau đó)
  • Bỏ qua các cảnh báo (ý tưởng tồi - bạn sẽ bỏ lỡ các cảnh báo "thực" mới)

5
@Jon, đã tìm thấy giải pháp: Nếu bạn nhận được cảnh báo này về mã được mã hóa với một lớp một phần, hãy tìm "nửa kia" của lớp một phần không được tạo. Nếu bạn thêm một nhận xét XML ở đó, cảnh báo cho mã được tạo sẽ biến mất. Tôi đã có cảnh báo này cho lớp Ứng dụng trong tệp App.gics được tạo từ mã XAML trong dự án WP7. Để giải quyết nó, tôi đã phải thêm một nhận xét XML trong tệp App.xaml.cs (không được tạo).
Marcel W

@MarcelW: Ah, vậy nó không dành cho các thành viên đã tạo? Hoặc tất cả họ đều là nội bộ? Điều đó sẽ có ý nghĩa ...
Jon Skeet

7
Ngoài ra, nếu bạn nhận được cảnh báo này từ mã Tự động tham chiếu dịch vụ , bạn có thể nhấp chuột phải vào tham chiếu dịch vụ, chọn "Định cấu hình tham chiếu dịch vụ ...", sau đó thay đổi "Cấp truy cập cho các lớp được tạo" thành Nội bộ.
Lee Grissom

9
Trong trường hợp bạn đang vô hiệu hóa các cảnh báo là @NickJ explaind, hãy đảm bảo rằng bạn đang thay đổi nó cho tất cả các cấu hình và không chỉ cho gỡ lỗi \ phát hành.
Avital

5
Bạn cũng có thể thêm thuộc tính này làm thuộc tính lớp nếu bạn muốn chặn mã cho toàn bộ lớp: [System.Diagnostics.CodeAnalysis.SuppressMessage ("Microsoft.Usage", "CS1591")]
cr1pto

92

Thêm các bình luận XML cho các loại và các thành viên hiển thị công khai tất nhiên :)

///<Summary>
/// Gets the answer
///</Summary>
public int MyMethod()
{
   return 42;
}

Bạn cần những <summary>bình luận kiểu này cho tất cả các thành viên - những điều này cũng hiển thị trong menu bật lên intellisense.

Các lý do bạn nhận được cảnh báo này là bởi vì bạn đã thiết lập dự án của bạn để tập tin xml tài liệu đầu ra (trong các thiết lập dự án). Điều này rất hữu ích cho các thư viện lớp (tập hợp dll), điều đó có nghĩa là người dùng của bạn đang nhận được tài liệu intellisense cho API của bạn ngay tại phòng thu trực quan.

Tôi khuyên bạn nên lấy cho mình một bản sao của GhostDoc Visual Studio AddIn .. Làm cho việc ghi chép tài liệu dễ dàng hơn nhiều.


8
+1 để đề cập đến GhostDoc. Không bao giờ biết về điều đó, nó chắc chắn làm cho tài liệu dễ dàng hơn.
V Xoayin

7
+1 để đưa ra lý do cảnh báo. Tìm thấy cài đặt bên dưới Build trong thuộc tính dự án (VS 2008) và tắt nó trên một dự án trong số mười dự án mà nó đã kiểm tra một cách bí ẩn mà không có lý do chính đáng.
Chuck Wilbur

30
-1 Để giới thiệu GhostDoc- AddOn ngu ngốc nhất tôi từng thấy. Nó tạo ra tài liệu. Bây giờ tạm dừng một giây để suy nghĩ về nó. Bạn muốn mã của bạn dễ hiểu hơn vì vậy bạn sử dụng một công cụ tạo tài liệu chỉ dựa trên tên phương thức và các loại đối số. Liệu nó có ý nghĩa đối với bạn? Người dùng có thể xem tên và loại đối số, thêm nhận xét vào DateTime date- Ngày thực sự không có ích.
gdoron đang hỗ trợ Monica

4
@gdoron, điều đó có thể không xảy ra với bạn, nhưng bạn có thể chỉnh sửa tài liệu mà GhostDoc tạo ra, điều này sẽ giúp bạn tiết kiệm rất nhiều thời gian so với việc viết toàn bộ tài liệu từ đầu.
Joel McBeth

3
GhostDoc không chỉ đoán những bình luận nên là gì - mặc dù hầu hết thời gian, nó khá gần gũi và bạn chỉ cần chỉnh sửa một vài từ thay vì gõ toàn bộ nội dung - và nếu bạn viết tài liệu chính xác (và bạn có lẽ không phải), có một khuôn mẫu cho hầu hết mọi thứ, cách chúng cần được diễn đạt (đối với các thuộc tính, hàm tạo, v.v.) và GhostDoc đưa chúng vào - thậm chí mát hơn: Nếu bạn đang ở trong một lớp con, nó có thể điền vào tài liệu với lớp từ lớp cơ sở dưới dạng mẫu để làm việc, thay vì sao chép bằng tay - nó đặt trong các vệt mờ ngoại lệ, v.v.
BrainSlugs83

41

Bỏ qua các cảnh báo cho các bình luận XML

(không phải công việc của tôi, nhưng tôi thấy nó hữu ích vì vậy tôi đã bao gồm bài viết & liên kết)

http://bernhardelbl.wordpress.com/2009/02/23/suppress-warnings-for-xml-comments/

Ở đây tôi sẽ chỉ cho bạn, làm thế nào bạn có thể ngăn chặn các cảnh báo cho các nhận xét XML sau khi xây dựng Visual Studio.

Lý lịch

Nếu bạn đã kiểm tra dấu "tệp tài liệu XML" trong cài đặt dự án Visual Studio, một tệp XML chứa tất cả các nhận xét XML sẽ được tạo. Ngoài ra, bạn sẽ nhận được rất nhiều cảnh báo trong các tệp do nhà thiết kế tạo, do các nhận xét XML bị thiếu hoặc sai. Mặc dù đôi khi các cảnh báo giúp chúng tôi cải thiện và ổn định mã của mình, việc nhận được hàng trăm cảnh báo nhận xét XML chỉ là một nỗi đau. Cảnh báo

Thiếu nhận xét XML cho loại hoặc thành viên hiển thị công khai Nhận xét XML về Máy tính có thẻ param cho '' ', nhưng không có tham số nào có tên đó là Thông số' mật 'không có thẻ param phù hợp trong nhận xét XML cho' '' (nhưng các tham số khác làm) Giải pháp

Bạn có thể chặn mọi cảnh báo trong Visual Studio.

  • Bấm chuột phải vào dự án Visual Studio / Properties / Build Tab

  • Chèn các số cảnh báo sau vào "Cảnh báo đàn áp": 1591,1572,1571,1573,1587,1570


6
Tôi chỉ cần thêm 1591 để loại bỏ các cảnh báo bình luận Xml.
Brian Behm

Cảm ơn danh sách mã! Tôi đã bắt đầu tập hợp chúng từng cái một và trên bản dựng thứ 3 với các cảnh báo tôi đã nghĩ rằng tôi cần phải mang nó từ một nơi nào đó như vậy :)
sarh

Có gì đó không đúng, 1591 cũng xóa các cảnh báo "Lỗi thời", nhưng MS chỉ cho biết đó là về các bình luận chỉ msdn.microsoft.com/en-us/l
Library / zk18c1w9.aspx

Tôi cũng đã kiểm tra trên MS tất cả 1572,1571,1573,1587,1570 và tôi sẽ không đặt chúng, chúng là các lỗi cụ thể hơn, giả sử bạn đã đặt /// <Tóm tắt> và sau đó bạn mắc lỗi trong params, bạn sẽ nhận được cảnh báo
Pawel Cioch

26

Có một cách khác để bạn có thể chặn các tin nhắn này mà không cần bất kỳ thay đổi mã hoặc khối pragma nào. Sử dụng Visual Studio - Chuyển đến thuộc tính dự án> Xây dựng> Lỗi và Cảnh báo> Cảnh báo loại bỏ - nối 1591 vào danh sách mã cảnh báo.

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


Đây là câu trả lời tốt nhất, dễ nhất và nhanh nhất để thực hiện cho đến nay về vấn đề này. Nó là một sự lặp lại của một câu trả lời khác ở trên, nhưng câu này được mô tả trực quan hơn nhiều cho một câu trả lời nhanh chóng. Cảm ơn rât nhiều.
David Covey

Câu trả lời tốt nhất ở đây. Ngăn không cho tôi phân tán codebase của mình #pragma warning disableở khắp mọi nơi, điều này thật khó chịu.
RoadRunner - MSFT

23

Chèn một nhận xét XML. ;-)

/// <summary>
/// Describe your member here.
/// </summary>
public string Something
{
    get;
    set;
}

Điều này có thể xuất hiện như một trò đùa từ cái nhìn đầu tiên, nhưng nó thực sự có thể hữu ích. Đối với tôi, nó trở nên hữu ích để suy nghĩ về những phương pháp làm ngay cả đối với các phương thức riêng tư (tất nhiên trừ khi thực sự tầm thường).


5
Tôi luôn bình luận các phương thức, nhưng đối với các thuộc tính (là các phương thức theo phương pháp nhưng thường có các triển khai tầm thường và các tên tự hiển nhiên) Tôi thích tránh sự nhàm chán và lặp đi lặp lại của việc thêm các nhận xét XML không cần thiết.
Peter Gluck

15

Điều này là do tệp tài liệu XML đã được chỉ định trong Thuộc tính dự án của bạn và Phương thức / Lớp của bạn là công khai và thiếu tài liệu.
Bạn có thể:

  1. Vô hiệu hóa tài liệu XML:

    Nhấp chuột phải vào Dự án của bạn -> Thuộc tính -> tab 'Xây dựng' -> bỏ chọn Tệp Tài liệu XML.

  2. Ngồi và viết tài liệu cho mình!

Tóm tắt tài liệu XML như sau:

/// <summary>
/// Description of the class/method/variable
/// </summary>
..declaration goes here..

Cảm ơn bạn. Tôi nghĩ rằng cách này là cách chính xác nhất để vô hiệu hóa cảnh báo
Ramil Aliyev

8

Tôi muốn thêm một cái gì đó vào câu trả lời được liệt kê ở đây:

Như Isak đã chỉ ra, tài liệu XML rất hữu ích cho các Thư viện lớp, vì nó cung cấp thông tin trực tiếp cho bất kỳ người tiêu dùng nào trong Visual Studio. Do đó, một giải pháp dễ dàng và chính xác là chỉ cần tắt tài liệu cho bất kỳ dự án cấp cao nào (như UI, v.v.), sẽ không được thực hiện bên ngoài dự án của chính nó.

Ngoài ra, tôi muốn chỉ ra rằng cảnh báo chỉ thể hiện trên các thành viên hiển thị công khai . Vì vậy, nếu bạn thiết lập thư viện lớp của mình để chỉ hiển thị những gì nó cần, bạn có thể nhận được mà không cần tài liệu privateinternalcác thành viên.


8

Tôi biết đây là một chủ đề thực sự cũ, nhưng đó là phản hồi đầu tiên trên google nên tôi nghĩ tôi đã thêm một chút thông tin

này : Hành vi này chỉ xảy ra khi mức cảnh báo được đặt thành 4 trong "Thuộc tính dự án" -> "Xây dựng" . Trừ khi bạn thực sự cần nhiều thông tin, bạn có thể đặt thành 3 và bạn sẽ thoát khỏi những cảnh báo này. Tất nhiên, việc thay đổi mức cảnh báo không chỉ ảnh hưởng đến bình luận, vì vậy vui lòng tham khảo tài liệu nếu bạn không chắc chắn mình sẽ thiếu gì:
https://msdn.microsoft.com/en-us/l Library / thxezb7y.aspx


7

Trong giải pháp của bạn, khi bạn kiểm tra tùy chọn tạo tệp Tài liệu XML, nó sẽ bắt đầu kiểm tra các thành viên công khai của bạn, để có XMLDoc, nếu không, bạn sẽ nhận được cảnh báo cho mỗi phần tử. nếu bạn không thực sự muốn phát hành DLL của mình và sau đó bạn không cần tài liệu, hãy đi đến giải pháp của bạn, xây dựng phần và tắt nó đi, nếu không bạn cần nó, vì vậy hãy điền chúng và nếu không quan trọng thuộc tính và trường, chỉ cần vượt qua chúng với hướng dẫn tiền biên dịch #pragma warning disable 1591 bạn cũng có thể khôi phục cảnh báo: #pragma warning restore 1591

Sử dụng pragma: bất kỳ vị trí nào trong mã trước vị trí bạn nhận được cảnh báo trình biên dịch cho ... (đối với tệp, đặt nó trong tiêu đề và bạn không cần phải bật lại, đối với lớp đơn bao quanh một lớp hoặc cho phương thức bao quanh một phương thức, hoặc ... bạn không cần phải bọc nó, bạn có thể gọi nó và khôi phục nó một cách tình cờ (bắt đầu trong tập tin và kết thúc bên trong một phương thức)), viết mã này:

#pragma warning disable 1591 và trong trường hợp bạn cần khôi phục nó, hãy sử dụng: #pragma warning restore 1591

Dưới đây là một ví dụ:

using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
using RealEstate.Entity.Models.Base;

namespace RealEstate.Models.Base
{
    public class CityVM
    {

#pragma warning disable 1591

        [Required]
        public string Id { get; set; }

        [Required]
        public string Name { get; set; }

        public List<LanguageBasedName> LanguageBasedNames { get; set; }

        [Required]
        public string CountryId { get; set; }

#pragma warning restore 1591

        /// <summary>
        /// Some countries do not have neither a State, nor a Province
        /// </summary>
        public string StateOrProvinceId { get; set; }
    }
}

Lưu ý rằng chỉ thị pragma bắt đầu ở đầu dòng


2
#pragma warning disable 1591
#pragma warning disable 1591
#pragma warning disable 1572
#pragma warning disable 1571
#pragma warning disable 1573
#pragma warning disable 1587
#pragma warning disable 1570

2

Đặt mức cảnh báo thành 2 sẽ chặn thông báo này. Không biết đó có phải là giải pháp tốt nhất vì nó cũng ngăn chặn các cảnh báo hữu ích.


Thay vì chọn cách này, tôi đoán, việc vô hiệu hóa tài liệu xml giúp giảm thiểu rủi ro.
Ajay Aradhya

2

Câu trả lời của Jon Skeet hoạt động rất tốt khi bạn xây dựng với VisualStudio. Tuy nhiên, nếu bạn đang xây dựng sln thông qua dòng lệnh (trong trường hợp của tôi là thông qua Ant) thì bạn có thể thấy rằng msbuild bỏ qua các yêu cầu siêu thanh sln.

Thêm phần này vào dòng lệnh msbuild đã giải quyết vấn đề cho tôi:

/p:NoWarn=1591

1

Tệp > Chỉnh sửa > Xem dự án (bấm)

Phần dưới cùng của cung thả xuống (nhấp vào Mở / Công việc hiện tại > Thuộc tính ), trang thuộc tính dự án đã mở tại "Xây dựng" trong "Đầu ra". "Bỏ chọn" hộp kiểm Tài liệu XML .

Xây dựng lại và không có cảnh báo.


Hãy chắc chắn cũng kiểm tra tất cả các cấu hình xây dựng của bạn. Tôi đã bỏ chọn nó cho Debug nhưng không phát hành và rất bối rối.
MattM

1
Giải pháp này không phải là giải pháp trong trường hợp tài liệu WebAPI. Bạn cần tùy chọn này trên, nhưng triệt tiêu các cảnh báo.
Pawel Cioch

1

Bạn cần thêm /// Nhận xét cho thành viên để hiển thị cảnh báo.

xem mã dưới đây

public EventLogger()
{
    LogFile = string.Format("{0}{1}", LogFilePath, FileName);
}

Nó hiển thị cảnh báo Thiếu bình luận XML cho loại hoặc thành viên hiển thị công khai '.EventLogger ()'

Tôi thêm bình luận cho các thành viên và cảnh báo đi.

///<Summary>
/// To write a log <Anycomment as per your code>
///</Summary>
public EventLogger()
{
    LogFile = string.Format("{0}{1}", LogFilePath, FileName);
}

-5

Tôi đã nhận được thông báo đó sau khi đính kèm một thuộc tính cho một phương thức

[webMethod]
public void DoSomething()
{
}

Nhưng cách chính xác là thế này:

[webMethod()] // Note the Parentheses 
public void DoSomething()
{
}
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.