构造新异常时抑制 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 忽略对 Exception
、LoggerExtensions
和 ILogger
(以及从这些类型派生的任何类型)的调用。
参考请看本期及下方回复:https://github.com/dotnet/roslyn-analyzers/issues/2933#issuecomment-627256340
【讨论】:
以上是关于构造新异常时抑制 CA1303 fxcop 警告的主要内容,如果未能解决你的问题,请参考以下文章