如果公共成员未记录,C# 编译器会显示警告 (CS1591):
警告...公共可见类型或成员缺少 XML 注释...
包括所有属性、方法、类、枚举值等。
问题: 有没有办法配置该类型的警告以仅标记未记录的方法?我使用 Visual Studio 2010 Ultimate 和 ReSharper 8.2。
示例:
public class MyClass // warning
{
public MyClass(int x) { ... } // warning
public void DoSomething() { ... } // warning
public int MyProp { get; private set; } // prevent this warning
}
public enum MyEnum // warning
{
X = 0, // prevent this warning
Y = 1 // prevent this warning
}
不,没有办法。如果指定了 /doc 选项,则会生成警告。此选项没有任何参数,仅用于记录方法。因此,添加到文档中的任何条目都会受到检查。
但是,您可以使用 pragma warning 禁用警告,但在我看来,即使您对字段和属性进行分组,这也不是很方便。
在 *.csproj 文件中添加 [NoWarn] 以禁用它。
<PropertyGroup>
<NoWarn>$(NoWarn);1591</NoWarn>
<RunAnalyzersDuringBuild>true</RunAnalyzersDuringBuild>
<EnableNETAnalyzers>true</EnableNETAnalyzers>
<AnalysisMode>AllEnabledByDefault</AnalysisMode>
<AnalysisLevel>latest</AnalysisLevel>
</PropertyGroup>
在当前版本的 Visual Studio 中,您可以在类型或成员上使用
SuppressMessageAttribute
。
[System.Diagnostics.CodeAnalysis.SuppressMessage("Compiler", "CS1591:Missing XML comment for publicly visible type or member", Justification = "<Pending>")]
有关该属性的更多详细信息可以在此处找到:https://learn.microsoft.com/en-us/visualstudio/code-quality/in-source-suppression-overview?view=vs-2019
您可以使用
#pragma warning disable CS1591
对代码的特定部分禁用此警告,然后使用 #pragma warning restore CS1591
恢复它。
示例:
public class MyClass // warning
{
public MyClass(int x) { ... } // warning
public void DoSomething() { ... } // warning
#pragma warning disable CS1591 // Disable warning: "Missing XML comment for publicly visible type or member"
public int MyProp { get; private set; } // this won't get a warning due to the #pragma
#pragma warning restore CS1591
}
不幸的是,这需要使用这些
#pragma
指令手动包装非方法,但这是有选择地禁用警告的唯一方法。
将其添加到您的 .csproj 中
<PropertyGroup>
...
<NoWarn>$(NoWarn);1591</NoWarn> <-- this line
...
</PropertyGroup>