编译器警告 CS1591:如何仅针对未记录的方法显示该警告?

问题描述 投票:0回答:6

如果公共成员未记录,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
}
c# compiler-warnings
6个回答
33
投票

如果您愿意,您可以对整个程序集禁用它。

项目属性 > 构建选项卡 > 抑制警告:1591

来源:https://stackoverflow.com/a/13414522


8
投票

不,没有办法。如果指定了 /doc 选项,则会生成警告。此选项没有任何参数,仅用于记录方法。因此,添加到文档中的任何条目都会受到检查。

但是,您可以使用 pragma warning 禁用警告,但在我看来,即使您对字段和属性进行分组,这也不是很方便。


5
投票

在 *.csproj 文件中添加 [NoWarn] 以禁用它。

  <PropertyGroup>
    <NoWarn>$(NoWarn);1591</NoWarn>
    <RunAnalyzersDuringBuild>true</RunAnalyzersDuringBuild>
    <EnableNETAnalyzers>true</EnableNETAnalyzers>
    <AnalysisMode>AllEnabledByDefault</AnalysisMode>
    <AnalysisLevel>latest</AnalysisLevel>
  </PropertyGroup>

3
投票

在当前版本的 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


0
投票

您可以使用

#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
指令手动包装非方法,但这是有选择地禁用警告的唯一方法。


0
投票

将其添加到您的 .csproj 中

<PropertyGroup>
   ...
   <NoWarn>$(NoWarn);1591</NoWarn> <-- this line
   ...
 </PropertyGroup>
© www.soinside.com 2019 - 2024. All rights reserved.