Commentaire XML manquant pour le type ou le membre visible publiquement

381

J'obtiens cet avertissement: "Commentaire XML manquant pour le type ou le membre visible publiquement".

Comment résoudre ça?

J.-BC
la source
8
Je vois cela aussi dans Visual Studio. Quelqu'un sait de quel logiciel provient cet avertissement? Style Cop? Fx Cop? Analyse de code? Comment puis-je l'éteindre?
Colonel Panic

Réponses:

668

5 options:

  • Remplissez les commentaires de la documentation (super, mais chronophage)
  • Désactiver la génération de commentaires (dans les propriétés du projet)
  • Désactivez l'avertissement dans les propriétés du projet (dans «Propriétés du projet», accédez à Propriétés du projet -> Créer> «Erreurs et avertissements» (section), Supprimer les avertissements (zone de texte), ajoutez 1591 (liste séparée par des virgules)). Par défaut, il changera la configuration active, envisagez de changer la configuration en Tout.
  • Utilisez #pragma warning disable 1591pour désactiver l'avertissement uniquement pour certains bits de code (et #pragma warning restore 1591après)
  • Ignorez les avertissements (mauvaise idée - vous manquerez de nouveaux "vrais" avertissements)
Jon Skeet
la source
5
@Jon, a trouvé la solution: si vous obtenez cet avertissement pour le code généré avec une classe partielle, recherchez «l'autre moitié» de la classe partielle qui n'est pas générée. Si vous y ajoutez un commentaire XML, l'avertissement pour le code généré disparaît. J'ai eu cet avertissement pour la classe App dans le fichier App.gics généré à partir du code XAML dans un projet WP7. Pour le résoudre, j'ai dû ajouter un commentaire XML dans le fichier App.xaml.cs (qui n'est pas généré).
Marcel W
@MarcelW: Ah, donc ce n'est pas pour les membres générés? Ou sont-ils tous internes de toute façon? Cela aurait du sens ...
Jon Skeet
7
De plus, si vous recevez cet avertissement d'un code généré automatiquement par une référence de service , vous pouvez cliquer avec le bouton droit sur la référence de service, choisir "Configurer la référence de service ...", puis changer "Niveau d'accès pour les classes générées" en Interne.
Lee Grissom
9
Dans le cas où vous désactivez les avertissements comme l'explique @NickJ, assurez-vous de le modifier pour toutes les configurations, et pas seulement pour debug \ release.
Avital
5
Vous pouvez également l'ajouter en tant qu'attribut de classe si vous souhaitez supprimer le code pour une classe entière: [System.Diagnostics.CodeAnalysis.SuppressMessage ("Microsoft.Usage", "CS1591")]
cr1pto
92

Ajoutez des commentaires XML aux types visibles publiquement et aux membres bien sûr :)

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

Vous avez besoin de ces <summary>commentaires de type sur tous les membres - ils apparaissent également dans le menu contextuel intellisense.

La raison pour laquelle vous obtenez cet avertissement est que vous avez défini votre projet pour générer un fichier xml de documentation (dans les paramètres du projet). Ceci est utile pour les bibliothèques de classes (assemblys .dll), ce qui signifie que les utilisateurs de votre .dll obtiennent la documentation intellisense pour votre API directement dans Visual Studio.

Je vous recommande de vous procurer une copie du GhostDoc Visual Studio AddIn .. Rend la documentation beaucoup plus facile.

Isak Savo
la source
8
+1 pour avoir mentionné GhostDoc. Je n'ai jamais su cela, cela rend certainement la documentation plus facile.
Vivelin du
7
+1 pour avoir donné la raison de l'avertissement. J'ai trouvé le paramètre sous Build dans les propriétés du projet (VS 2008) et l'ai désactivé sur le seul projet sur dix qui l'a mystérieusement vérifié sans raison valable.
Chuck Wilbur
30
-1 Pour recommander GhostDoc- le plus stupide AddOn que j'aie jamais vu. Il génère de la documentation. Maintenant, faites une pause pour y réfléchir. Vous voulez que votre code soit plus compréhensible, vous utilisez donc un outil qui génère de la documentation uniquement en fonction du nom de la méthode et des types d'arguments. est-ce que vous saisissez? L'utilisateur peut voir le nom et les types des arguments, ajouter un commentaire à DateTime date- La date n'aide vraiment pas.
gdoron soutient Monica
4
@gdoron, cela ne vous est peut-être pas venu à l'esprit, mais vous pouvez modifier la documentation générée par GhostDoc, ce qui vous fera gagner beaucoup de temps par rapport à l'écriture complète de la documentation.
Joel McBeth du
3
GhostDoc fait plus que deviner ce que les commentaires devraient être - bien que la plupart du temps, c'est assez proche et vous avez juste besoin de modifier quelques mots au lieu de taper le tout - et si vous documentez correctement (et vous probablement pas), il y a un modèle pour la plupart des choses, comment ils doivent être formulés (pour les propriétés, les constructeurs, etc.), et GhostDoc les met - encore plus cool: si vous êtes dans une classe enfant, il peut remplissez la documentation avec celle de la classe de base comme modèle pour travailler avec, au lieu de la copier à la main - elle met dans les textes d'exception, etc.
BrainSlugs83
41

Supprimer les avertissements pour les commentaires XML

(pas mon travail, mais je l'ai trouvé utile, j'ai donc inclus l'article et le lien)

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

Ici, je vais vous montrer comment supprimer les avertissements pour les commentaires XML après une version de Visual Studio.

Contexte

Si vous avez coché la marque "Fichier de documentation XML" dans les paramètres du projet Visual Studio, un fichier XML contenant tous les commentaires XML est créé. De plus, vous obtiendrez également de nombreux avertissements dans les fichiers générés par le concepteur, en raison des commentaires XML manquants ou incorrects. Bien que parfois les avertissements nous aident à améliorer et à stabiliser notre code, obtenir des centaines d'avertissements de commentaires XML n'est qu'une douleur. Avertissements

Commentaire XML manquant pour le type ou le membre visible publiquement… Le commentaire XML sur… a une balise param pour «…», mais il n'y a pas de paramètre de ce nom Le paramètre «…» n'a pas de balise param correspondante dans le commentaire XML pour «…» (mais d'autres paramètres le font) Solution

Vous pouvez supprimer tous les avertissements dans Visual Studio.

  • Cliquez avec le bouton droit sur l'onglet Projet / Propriétés / Build de Visual Studio

  • Insérez les numéros d'avertissement suivants dans les "Supprimer les avertissements": 1591,1572,1571,1573,1587,1570

Sprotty
la source
6
Je n'avais besoin que d'ajouter 1591 pour supprimer les avertissements de commentaire Xml.
Brian Behm
Merci pour la liste de codes! J'ai commencé à les rassembler un par un et le 3ème build avec des avertissements, j'ai eu l'idée que je devais le prendre quelque part tel
quel
Quelque chose ne va pas, 1591 supprime également les avertissements "obsolètes", mais MS indique qu'il s'agit uniquement de commentaires msdn.microsoft.com/en-us/library/zk18c1w9.aspx
Pawel Cioch
J'ai également vérifié sur MS tous les 1572,1571,1573,1587,1570, et je ne les définirais pas, ce sont des erreurs plus spécifiques, disons que vous avez défini /// <summary> puis vous faites une erreur dans les paramètres, vous devrait recevoir un avertissement
Pawel Cioch
26

Il existe un autre moyen de supprimer ces messages sans avoir besoin de modifier le code ou de bloquer le pragma. Utilisation de Visual Studio - Accédez aux propriétés du projet> Générer> Erreurs et avertissements> Supprimer les avertissements - ajoutez 1591 à la liste des codes d'avertissement.

entrez la description de l'image ici

ekhanna
la source
C'est de loin la réponse la meilleure, la plus simple et la plus rapide à implémenter que j'ai vue jusqu'à présent pour ce problème. C'est une répétition d'une autre réponse ci-dessus, mais celle-ci est beaucoup plus descriptive visuellement et donne une réponse instantanée rapide. Merci beaucoup.
David Covey
Meilleure réponse ici. M'empêche de disperser ma base de code avec #pragma warning disablepartout, ce qui est juste ennuyeux.
RoadRunner - MSFT
23

Insérez un commentaire XML. ;-)

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

Cela peut apparaître comme une blague à première vue, mais cela peut en fait être utile. Pour moi, il s'est avéré utile de réfléchir à ce que les méthodes font même pour les méthodes privées (à moins que ce soit vraiment trivial, bien sûr).

Matthias Meid
la source
5
Je commente toujours les méthodes, mais pour les propriétés (qui sont des méthodes tehniquement mais qui ont généralement des implémentations triviales et des noms évidents), je préfère éviter l'ennui et la répétition d'ajouter des commentaires XML superflus.
Peter Gluck
15

En effet, un fichier de documentation XML a été spécifié dans les propriétés de votre projet et votre méthode / classe est publique et manque de documentation.
Vous pouvez soit :

  1. Désactivez la documentation XML:

    Faites un clic droit sur votre projet -> Propriétés -> onglet 'Construire' -> décochez Fichier de documentation XML.

  2. Asseyez-vous et écrivez la documentation vous-même!

Le résumé de la documentation XML se présente comme suit:

/// <summary>
/// Description of the class/method/variable
/// </summary>
..declaration goes here..
Ajay Aradhya
la source
Merci. Je pense que cette façon est la meilleure façon correcte de désactiver l'avertissement
Ramil Aliyev
8

Je voulais ajouter quelque chose aux réponses énumérées ici:

Comme l'a souligné Isak, la documentation XML est utile pour les bibliothèques de classes, car elle fournit intellisense à tout consommateur dans Visual Studio. Par conséquent, une solution simple et correcte consiste à simplement désactiver la documentation de tout projet de niveau supérieur (comme l'interface utilisateur, etc.), qui ne sera pas implémenté en dehors de son propre projet.

De plus, je voulais souligner que l'avertissement ne s'exprime que sur les membres publiquement visibles . Donc, si vous configurez votre bibliothèque de classes pour exposer uniquement ce dont elle a besoin, vous pouvez vous en tirer sans documentation privateni internalmembres.

Mike Guthrie
la source
8

Je sais que c'est un fil très ancien, mais c'est la première réponse sur google, donc j'ai pensé ajouter ce bit d'informations:

Ce problème se produit uniquement lorsque le niveau d'avertissement est défini sur 4 sous "Propriétés du projet" -> "Construire" . Sauf si vous avez vraiment besoin de tant d'informations, vous pouvez le définir sur 3 et vous vous débarrasserez de ces avertissements. Bien sûr, la modification du niveau d'avertissement affecte plus que des commentaires, veuillez donc vous référer à la documentation si vous n'êtes pas sûr de ce qui vous manquera:
https://msdn.microsoft.com/en-us/library/thxezb7y.aspx

Marius Agur
la source
7

Dans votre solution, une fois que vous avez coché l'option de génération du fichier de document XML, il commence à vérifier vos membres publics, pour avoir le XMLDoc, s'ils ne le font pas, vous recevrez un avertissement pour chaque élément. si vous ne voulez pas vraiment publier votre DLL et que vous n'avez pas besoin de documentations, allez dans votre solution, créez la section et désactivez-la, sinon si vous en avez besoin, remplissez-les et s'il n'y a pas d'importance propriétés et champs, il suffit de les dépasser avec des instructions de précompilation, #pragma warning disable 1591 vous pouvez également restaurer l'avertissement: #pragma warning restore 1591

utilisation de pragma: n'importe où dans le code avant l'endroit pour lequel vous recevez un avertissement du compilateur pour ... une méthode, ou ... vous n'avez pas non plus besoin de l'enrouler, vous pouvez l'appeler et la restaurer de manière décontractée (commencer au début du fichier et se terminer à l'intérieur d'une méthode)), écrivez ce code:

#pragma warning disable 1591 et au cas où vous auriez besoin de le restaurer, utilisez: #pragma warning restore 1591

Voici un exemple:

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

Notez que la directive pragma commence au début de la ligne

deadManN
la source
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
Petar
la source
2

La définition du niveau d'avertissement sur 2 supprime ces messages. Je ne sais pas si c'est la meilleure solution car elle supprime également les avertissements utiles.

danpop
la source
Plutôt que d'opter pour cela, je suppose que la désactivation de la documentation xml réduit les risques.
Ajay Aradhya
2

La réponse de Jon Skeet fonctionne très bien lorsque vous construisez avec VisualStudio. Cependant, si vous construisez le sln via la ligne de commande (dans mon cas, c'était via Ant), vous pouvez constater que msbuild ignore les demandes de suppression de sln.

L'ajout de cela à la ligne de commande msbuild a résolu le problème pour moi:

/p:NoWarn=1591
Bill Tarbell
la source
1

Fichier > Modifier > Afficher le projet (cliquez)

En bas de l'arc déroulant (cliquez sur Ouvrir / Travail en cours > Propriétés ), la page des propriétés du projet ouverte à "Build" sous "Output". Case à cocher "Décocher" la documentation XML .

Reconstruire et aucun avertissement.

à M
la source
Assurez-vous également de vérifier toutes vos configurations de build. Je l'avais décoché pour Debug mais pas pour Release et j'étais très confus.
MattM
1
Cette solution n'est pas une solution en cas de documentation WebAPI. Vous avez besoin de cette option, mais supprimez les avertissements.
Pawel Cioch
1

Vous devez ajouter /// Commentaire pour le membre pour lequel l'avertissement est affiché.

voir ci-dessous le code

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

Il affiche un avertissement Commentaire XML manquant pour le type ou le membre visible par le public '.EventLogger ()'

J'ai ajouté un commentaire pour le membre et l'avertissement a disparu.

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

J'ai reçu ce message après avoir attaché un attribut à une méthode

[webMethod]
public void DoSomething()
{
}

Mais la bonne façon était la suivante:

[webMethod()] // Note the Parentheses 
public void DoSomething()
{
}
Coyolero
la source