Відсутній коментар XML для загальнодоступного типу або члена


381

Я отримую це попередження: "Відсутній коментар XML для загальнодоступного типу або члена".

Як це вирішити?


8
Я бачу це теж у Visual Studio. Хтось знає, з якого програмного забезпечення виходить це попередження? Стильний коп? Fx Cop? Аналіз коду? Як я можу це відключити?
Полковник Паніка

Відповіді:


668

5 варіантів:

  • Заповніть коментарі до документації (чудово, але забирає багато часу)
  • Вимкнення генерації коментарів (у властивостях проекту)
  • Вимкніть попередження у властивостях проекту (у розділі "Властивості проекту" перейдіть до "Властивості проекту" -> Збірка> "Помилки та попередження" (розділ), Придушити попередження (текстове поле), додайте 1591 (список, розділений комами). За замовчуванням він змінить активну конфігурацію, подумайте про зміну конфігурації на Усі.
  • Використовуйте #pragma warning disable 1591для відключення попередження лише для деяких бітів коду (і #pragma warning restore 1591після)
  • Ігноруйте попередження (погана ідея - ви пропустите нові "справжні" попередження)

5
@Jon, знайшов рішення: Якщо ви отримуєте це попередження про гередований код з частковим класом, шукайте "іншу половину" часткового класу, яка не генерується. Якщо ви додасте туди коментар XML, попередження для згенерованого коду відключається. У мене було це попередження для класу App у файлі App.gics, сформованому з коду XAML в проекті WP7. Щоб вирішити це, мені довелося додати коментар XML у файл App.xaml.cs (який не генерується).
Marcel W

@MarcelW: А, це не для створених членів? Або всі вони все-таки внутрішні? Це мало б сенс ...
Джон Скіт

7
Крім того, якщо ви отримуєте це попередження з автоматично створеного коду служби довідки служби , ви можете клацнути правою кнопкою миші посилання на службу, вибрати "Налаштувати довідку служби ...", а потім змінити "Рівень доступу для створених класів" на "Внутрішній".
Лі Гріссом

9
Якщо ви відключаєте попередження, як пояснює @NickJ, переконайтеся, що ви змінюєте його для всіх конфігурацій, а не лише для налагодження \ випуску.
Авіталь

5
Ви також можете додати це як атрибут класу, якщо ви хочете придушити код для всього класу: [System.Diagnostics.CodeAnalysis.SuppressMessage ("Microsoft.Usage", "CS1591")]
cr1pto

92

Додайте коментарі XML до загальнодоступних типів та членів курсу :)

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

Вам потрібні такі <summary>коментарі щодо всіх учасників - вони також відображаються у міжсмуговому спливаючому меню.

Причина ви отримаєте це попередження, тому що ви налаштували свій проект для виведення документації файлу XML (в настройках проекту). Це корисно для бібліотек класів (.dll збірок), що означає, що користувачі вашого .dll отримують документознавчу документацію для вашого API саме там у візуальній студії.

Я рекомендую вам придбати собі копію додатка GhostDoc Visual Studio AddIn .. Документування значно спрощує.


8
+1 для згадування GhostDoc. Ніколи про це не знали, але це, безумовно, полегшує документування.
Вівелін

7
+1 за надання підстави для попередження. Виявив налаштування в розділі Build у властивостях проекту (VS 2008) і вимкнув його на одному з десяти проектів, які загадково перевіряли без поважних причин.
Чак Вільбур

30
-1 Для рекомендування GhostDoc- найглухіший AddOn, який я коли-небудь бачив. Він формує документацію. Тепер зробіть паузу на секунду, щоб подумати над цим. Ви хочете, щоб ваш код був більш зрозумілим, тому ви використовуєте інструмент, який створює документацію виключно на основі назви методу та типів аргументів. Це має для вас сенс? Користувач може побачити ім'я та типи аргументів, додати коментар до DateTime date- Дата дійсно не допомагає.
gdoron підтримує Моніку

4
@gdoron, це, можливо, вам не прийшло в голову, але ви можете відредагувати створену GhostDoc документацію, що заощадить вам багато часу проти написання всієї документації з нуля.
Джоел МакБет

3
GhostDoc більше, ніж просто здогадується, якими мають бути коментарі - хоча більшість часу це досить близько, і вам просто потрібно відредагувати кілька слів, а не вводити всю річ - і якщо ви правильно документуєте (а ви мабуть, ні) є шаблон для більшості речей, як їх потрібно сформулювати (для властивостей, конструкторів тощо), і GhostDoc ставить їх у ще крутіше: якщо ви перебуваєте в дочірньому класі, він може заповніть документацію з базового класу як шаблон для роботи, замість того, щоб копіювати його вручну - він ставить у виняток
розмиття

41

Придушити попередження для коментарів XML

(не моя робота, але я вважаю її корисною, тому я включив статтю та посилання)

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

Тут я покажу вам, як ви можете придушити попередження для коментарів XML після збірки Visual Studio.

Фон

Якщо ви встановили позначку "Файл документації XML" в налаштуваннях проекту Visual Studio, створюється XML-файл, що містить усі коментарі XML. Крім того, ви отримаєте багато попереджень також у файлах, створених дизайнером, через відсутніх або неправильних коментарів XML. Хоча іноді попередження допомагає нам покращити та стабілізувати наш код, отримання сотень попереджень про коментарі XML - це просто біль. Попередження

Відсутній коментар XML для загальнодоступного типу або члена… У коментарі XML… є тег парамметів для „…“, але немає параметра за цим ім’ям Параметр „…“ не має відповідного тегу парам у коментарі XML для „…“ (але інші параметри роблять) Рішення

Ви можете придушити кожне попередження у Visual Studio.

  • Клацніть правою кнопкою миші проект Visual Studio / Властивості / Збірка

  • Вставте наступні номери попереджень у "Придушити попередження": 1591,1572,1571,1573,1587,1570


6
Мені потрібно було лише додати 1591, щоб придушити попередження щодо коментарів Xml.
Брайан Бем

Дякуємо за список кодів! Я почав збирати їх по черзі, і на 3-й збірці з попередженнями прийшов до думки, що мені потрібно взяти його звідкись так, як є :)
сарх


Я також перевірив на MS всі 1572,1571,1573,1587,1570, і я б їх не встановлював, вони є більш конкретними помилками, скажімо, ви встановили /// <summary> і тоді ви помилитесь у парамах, ви повинні отримати попередження
Pawel Cioch

26

Існує ще один спосіб придушити ці повідомлення без необхідності зміни коду чи прагматичних блоків. Використання Visual Studio - Перейдіть до властивостей проекту> Збірка> Помилки та попередження> Придушити попередження - додайте 1591 до списку кодів попереджень.

введіть тут опис зображення


Це, безумовно, найкращий, найпростіший і найшвидший для втілення відповідь, який я бачив до цього часу на це питання. Це повторення іншої відповіді вище, але ця є набагато більш наочно описовою, що дає швидку миттєву відповідь. Дуже дякую.
Девід Кові

Найкраща відповідь тут. Заважає мені розповсюджувати свою кодову базу #pragma warning disableскрізь, що просто дратує.
RoadRunner - MSFT

23

Вставте коментар XML ;-)

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

Це може здатися жартом на перший погляд, але насправді це може бути корисно. Для мене виявилося корисним подумати про те, які методи роблять навіть для приватних методів (якщо, звичайно, не банально, звичайно).


5
Я завжди коментую методи, але для властивостей (які технічно є методами, але, як правило, мають тривіальні реалізації та зрозумілі імена), я вважаю за краще уникати занурення та повторення додавання зайвих коментарів XML.
Пітер Глюк

15

Це пов’язано з тим, що файл документації XML був визначений у ваших властивостях проекту, а ваш метод / клас є загальнодоступним та відсутність документації.
Ви можете:

  1. Вимкнення XML-документації:

    Клацніть правою кнопкою миші на вашому проекті -> Властивості -> на вкладці "Збірка" -> зніміть прапорець XML-файл документації.

  2. Сядьте і напишіть документацію самостійно!

Короткий огляд документації XML виглядає так:

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

Дякую. Я вважаю, що цей спосіб є найкращим правильним способом відключення попередження
Раміль Алієв

8

Я хотів щось додати до наведених тут відповідей:

Як зазначив Ісак, XML-документація є корисною для бібліотек класів, оскільки забезпечує інтелігенцію для будь-яких споживачів у Visual Studio. Тому легким і правильним рішенням є просто вимкнути документацію для будь-якого проекту вищого рівня (наприклад, інтерфейсу користувача тощо), який не буде реалізований за межами власного проекту.

Крім того, я хотів би зазначити, що попередження висловлюється лише для публічно видимих членів. Отже, якщо ви налаштуєте бібліотеку класів лише на те, що їй потрібно, ви можете пройти, не документуючи privateта internalчленів.


8

Я знаю, що це справді стара тема, але це перша відповідь у google, тому я подумав додати цю інформацію:

така поведінка виникає лише тоді, коли рівень попередження встановлено на 4 у розділі "Властивості проекту" -> "Побудувати" . Якщо вам дійсно не потрібна стільки інформації, ви можете встановити її на 3, і ви позбудетеся цих попереджень. Звичайно, зміна рівня попередження впливає більше, ніж просто коментарі, тому, будь ласка, зверніться до документації, якщо ви не впевнені, що вам не вистачить:
https://msdn.microsoft.com/en-us/library/thxezb7y.aspx


7

У вашому рішенні, як тільки ви перевірите можливість створення файлу XML-документа, він почне перевіряти ваші громадські члени, на те, чи є XMLDoc, якщо їх немає, ви отримуватимете попередження про кожен елемент. якщо ви дійсно не хочете випускати DLL, а також вам не потрібні документації, перейдіть до свого рішення, складіть розділ і вимкніть його, інакше, якщо вам це потрібно, заповніть їх, і якщо є неважливі властивості та поля, просто перевершіть їх за допомогою інструкції перед компілятором, #pragma warning disable 1591 ви також можете відновити попередження: #pragma warning restore 1591

використання прагми: будь-де, де в коді перед місцем, ви отримуєте попередження компілятора для ... (для файлу, помістіть його в заголовок, і вам не потрібно його знову включати, для обгортання одного класу навколо класу або для методу обгортання методу, або ... вам не потрібно або обертати його, ви можете викликати його і відновити його випадково (запустити в файл і закінчити всередині методу)), напишіть цей код:

#pragma warning disable 1591 і якщо вам потрібно відновити його, використовуйте: #pragma warning restore 1591

Ось приклад:

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; }
    }
}

Зауважте, що директива прагми починається з початку рядка


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

Встановлення рівня попередження на 2 придушує ці повідомлення. Не знайте, чи це найкраще рішення, оскільки воно також пригнічує корисні попередження.


Я вважаю, що замість того, щоб вибрати це, відключення XML-документації зменшує ризики.
Аджай Арадхья

2

Відповідь Джона Скіта чудово підходить, коли ви будуєте з VisualStudio. Однак, якщо ви будуєте sln за допомогою командного рядка (в моєму випадку це було через Ant), ви можете виявити, що msbuild ігнорує запити на придушення sln.

Додавання цього до командного рядка msbuild вирішило проблему для мене:

/p:NoWarn=1591

1

Файл > Редагувати > Переглянути проект (натисніть)

Знизу випадаючого лука (натисніть на Відкрити / Поточна робота > Властивості ), відкрийте сторінку властивостей проекту на сторінці "Збірка" в розділі "Вихідні дані". "Зніміть прапорець" Документація XML .

Перебудовуйте і не попереджуйте.


Не забудьте також перевірити всі свої конфігурації збірки. Я відміняв це для налагодження, але не для випуску, і був дуже розгублений.
Метм

1
Це рішення не є рішенням у випадку документації WebAPI. Вам потрібна ця опція, але придушіть попередження.
Pawel Cioch

1

Вам потрібно додати /// коментар для учасника, для якого відображається попередження.

дивіться нижче код

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

Він відображає попередження про відсутність коментаря XML для загальнодоступного типу або члена '.EventLogger ()'

Я додав коментар до учасника та попередження пішло.

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

-5

Я отримав це повідомлення після того, як приєднав атрибут до методу

[webMethod]
public void DoSomething()
{
}

Але правильним було таке:

[webMethod()] // Note the Parentheses 
public void DoSomething()
{
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.