构造新异常时抑制 CA1303 fxcop 警告

Posted

技术标签:

【中文标题】构造新异常时抑制 CA1303 fxcop 警告【英文标题】:Suppress CA1303 fxcop warning when constructing a new Exception 【发布时间】:2020-04-26 02:32:35 【问题描述】:

当我在 ASP.NET Core 3.1 代码中引发异常时,当 fxcop 将字符串文字视为 new Exception() 的参数时会发出警告。例如:

throw new InvalidOperationException("Ouch");

给我CA1303: Do not pass literals as localized parameters

作为一般规则,我不会向最终用户显示异常消息,因此我不想对它们进行本地化。有没有办法配置 CA1303,使其忽略从 System.Exception 派生的任何构造函数参数?

编辑:

经过一番搜索,我找到了关于这个问题的对话:

https://github.com/dotnet/roslyn-analyzers/issues/2933

【问题讨论】:

【参考方案1】:

如果您使用 .editor 配置,您可以这样做:dotnet_code_quality.CA1303.use_naming_heuristic = true 或者完全禁用 CA1303。

【讨论】:

去过那里,试过了,不行。可能与.editorconfig代码编辑器抱怨The keyword "dotnet_code_quality.CA1303.use_naming_heuristic" is unknown有关。 您可以将以下内容添加到您的 csproj:<NoWarn>CA1303</NoWarn>【参考方案2】:

Microsoft.CodeAnalysis.FxCopAnalyzers 的 3.3.0 版终于修复了在调用特定类型时抑制警告的能力。

为了在构造Exception或调用ILogger函数时抑制CA1303,我在我的解决方案的根目录中添加了一个.editorconfig文件(所有项目都是该目录的子目录)并添加这些行:

[*.cs]
dotnet_code_quality.CA1303.excluded_type_names_with_derived_types = Exception|LoggerExtensions|ILogger

这告诉 CA1303 忽略对 ExceptionLoggerExtensionsILogger(以及从这些类型派生的任何类型)的调用。

参考请看本期及下方回复:https://github.com/dotnet/roslyn-analyzers/issues/2933#issuecomment-627256340

【讨论】:

以上是关于构造新异常时抑制 CA1303 fxcop 警告的主要内容,如果未能解决你的问题,请参考以下文章

CA1303 改为从资源表中检索以下字符串:“服务已启动”

运维工程师如何做好告警分析与汇报?

运维工程师如何做好告警分析与汇报?

抑制或避免警告 CA2214

FxCop - CA1034 错误 - 为啥?

FXCop 违规 CA1716 IdentifiersShouldNotMatchKeyword