I am getting this warning: "Missing XML comment for publicly visible type or member".
How to solve this?
I am getting this warning: "Missing XML comment for publicly visible type or member".
How to solve this?
5 options:
#pragma warning disable 1591
to disable the warning just for some bits of code (and #pragma warning restore 1591
afterwards)verbosity
to minimal
(or quiet
). –
Cranmer .vbproj
by hand. Insert a <NoWarn>1591</NoWarn>
(or add to the existing value). –
Ratable /p:NoWarn=1591
to the cmdline args. –
Brickkiln public
from the outermost containing type (such as class
). When you remove the outermost public
modifier, the members are no longer publicly visible, hence XML documentation is optional. Will it not build? You may need to remove a couple of other public
modifiers to maintain consistent accessibility. Is the type used by other assemblies? Then you must keep public
of course. In that case, supply the documentation; it will help those outside consumers of your type. –
Acrylyl [assembly: SuppressMessage("Microsoft.Usage", "CS1591", Justification = "Generated code.", Scope = "namespaceanddescendants", Target = "~N:<Your.Name.Space>")]
–
Guerdon ///
in above a member generates all the relevant tags for me. –
Chiastolite NoWarn
is semicolon-separated instead of comma-separated in C# csproj files. –
Campbellbannerman Add XML comments to the publicly visible types and members of course :)
///<Summary>
/// Gets the answer
///</Summary>
public int MyMethod()
{
return 42;
}
You need these <summary>
type comments on all members - these also show up in the intellisense popup menu.
The reason you get this warning is because you've set your project to output documentation xml file (in the project settings). This is useful for class libraries (.dll assemblies) which means users of your .dll are getting intellisense documentation for your API right there in visual studio.
I recommend you get yourself a copy of the GhostDoc Visual Studio AddIn.. Makes documenting much easier.
GhostDoc
- the stupidest AddOn I've ever seen. It generates documentation. Now pause a second to think about it. You want your code to be more understandable so you use a tool that generates documentation solely based on the method name and arguments types. Does it make sense to you? The user can see the name and types of the arguments, add comment to DateTime date
- The date really doesn't help. –
Veron ///
generates empty template, this all you need and helpful. GhostDoc is stupid and contra-productive . #Not-convinced. –
Veron There is another way you can suppress these messages without the need for any code change or pragma blocks. Using Visual Studio - Go to project properties > Build > Errors and Warnings > Suppress Warnings - append 1591 to list of warning codes.
#pragma warning disable
everywhere, which is just annoying. –
Karolynkaron Suppress Warnings for XML comments
(not my work, but I found it useful so I've included the article & link)
http://bernhardelbl.wordpress.com/2009/02/23/suppress-warnings-for-xml-comments/
Here i will show you, how you can suppress warnings for XML comments after a Visual Studio build.
Background
If you have checked the "XML documentation file" mark in the Visual Studio project settings, a XML file containing all XML comments is created. Additionally you will get a lot of warnings also in designer generated files, because of the missing or wrong XML comments. While sometimes warnings helps us to improve and stabilize our code, getting hundreds of XML comment warnings is just a pain.
Warnings
Missing XML comment for publicly visible type or member …
XML comment on … has a param tag for ‘…’, but there is no parameter by that name Parameter ‘…’ has no matching param tag in the XML comment for ‘…’ (but other parameters do)Solution
You can suppress every warning in Visual Studio.
Right-click the Visual Studio project / Properties / Build Tab
Insert the following warning numbers in the "Suppress warnings": 1591,1572,1571,1573,1587,1570
Insert an XML comment. ;-)
/// <summary>
/// Describe your member here.
/// </summary>
public string Something
{
get;
set;
}
This may appear like a joke at the first glance, but it may actually be useful. For me it turned out to be helpful to think about what methods do even for private methods (unless really trivial, of course).
A really simple way to suppress the warning is to add a property in the .csproj
file:
<Project>
<PropertyGroup>
...
<!--disable missing comment warning-->
<NoWarn>$(NoWarn);1591</NoWarn>
</PropertyGroup>
...
This is because an XML documentation file has been specified in your Project Properties and Your Method/Class is public and lack documentation.
You can either :
Right Click on your Project -> Properties -> 'Build' tab -> uncheck XML Documentation File.
Summary of XML documentation goes like this:
/// <summary>
/// Description of the class/method/variable
/// </summary>
..declaration goes here..
I know this is a really old thread, but it's the first response on google so I thought I'd add this bit of information:
This behavior only occurs when the warning level is set to 4 under "Project Properties" -> "Build". Unless you really need that much information you can set it to 3 and you'll get rid of these warnings. Of course, changing the warning level affects more than just comments, so please refer to the documentation if you're unsure what you'll be missing:
https://msdn.microsoft.com/en-us/library/thxezb7y.aspx
I wanted to add something to the answers listed here:
As Isak pointed out, the XML documentation is useful for Class Libraries, as it provides intellisense to any consumer within Visual Studio. Therefore, an easy and correct solution is to simply turn off documentation for any top-level project (such as UI, etc), which is not going to be implemented outside of its own project.
Additionally I wanted to point out that the warning only expresses on publicly visible members. So, if you setup your class library to only expose what it needs to, you can get by without documenting private
and internal
members.
In your solution, once you check the option to generate XML Document file, it start checking your public members, for having the XMLDoc, if they don't, you'll receive a warning per each element.
if you don't really want to release your DLL, and also you don't need documentations then, go to your solution, build section, and turn it off, else if you need it, so fill them, and if there are unimportant properties and fields, just surpass them with pre-compiler instruction
#pragma warning disable 1591
you can also restore the warning :
#pragma warning restore 1591
pragma usage: any where in code before the place you get compiler warning for... (for file, put it in header, and you do not need to enable it again, for single class wrap around a class, or for method wrap around a method, or ... you do not either need to wrap it around, you can call it and restore it casually (start in begin of file, and end inside a method)), write this code:
#pragma warning disable 1591
and in case you need to restore it, use:
#pragma warning restore 1591
Here an example:
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; }
}
}
Note that pragma directive start at the begin of line
Jon Skeet's answer works great for when you're building with VisualStudio. However, if you're building the sln via the command line (in my case it was via Ant) then you may find that msbuild ignores the sln supression requests.
Adding this to the msbuild command line solved the problem for me:
/p:NoWarn=1591
File > Edit > View Project (click)
Bottom of the drop down bow (click on Open/Current work > Properties), opened project properties page at "Build" under "Output". "Uncheck" XML Documentation checkbox.
Rebuild and no warnings.
#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
Setting the warning level to 2 suppresses this messages. Don't know if it's the best solution as it also suppresses useful warnings.
You need to add /// Comment for the member for which warning is displayed.
see below code
public EventLogger()
{
LogFile = string.Format("{0}{1}", LogFilePath, FileName);
}
It displays warning Missing XML comment for publicly visible type or member '.EventLogger()'
I added comment for the member and warning gone.
///<Summary>
/// To write a log <Anycomment as per your code>
///</Summary>
public EventLogger()
{
LogFile = string.Format("{0}{1}", LogFilePath, FileName);
}
The answer from @JonSkeet is almost complete. If you want to disable it for every project in your solution you could add the row below to a .editorconfig
file.
dotnet_diagnostic.CS1591.severity = none
https://github.com/dotnet/roslyn/issues/41171#issuecomment-577811906
See file hierarchy and precedence on where to add the file:
Late in here but many solutions in this thread focus on removing the warnings entirely within the project or within the class.
If you want to keep the legitimate warnings but remove some - e.g. the cancellationToken on a WebApi controller when you expose the API using swagger (the api user does not need this - it is supplied by DI).
Ugly and obvious but at least in this case cancellation tokens are the last param.
/// <summary>
/// Creates a Service
/// </summary>
/// <param name="service">The Service Definition</param> (**note no cancellation token param**)
/// <returns>A newly created item</returns>
/// <response code="201">Returns the newly created service</response>
/// <response code="400">If there are validation errors with the submitted json body</response>
/// <response code="409">Conflict. The service already exists</response>
/// <response code="500">Because life is never perfect</response>
[ProducesResponseType(typeof(Service), 201)]
[ProducesResponseType(400)]
[ProducesResponseType(409)]
[ProducesResponseType(500)]
[HttpPost]
public async Task<ActionResult> ServiceCreate([FromBody] ServicePostRequest service,
#pragma warning disable 1573
CancellationToken cancellationToken = default) //**note: no warning**
#pragma warning restore 1573
{
I got that message after attached an attribute to a method
[webMethod]
public void DoSomething()
{
}
But the correct way was this:
[webMethod()] // Note the Parentheses
public void DoSomething()
{
}
© 2022 - 2024 — McMap. All rights reserved.