解决 .NET CA2253 提示

问题描述

引用 Microsoft.Extensions.Logging,在用 logger 输出 log 时使用带有纯数字占位符的字符串变量,代码分析会提示编号为 CA2253 的优化措施

CA2253: 日志记录消息模板中的已命名占位符不应仅由数字字符组成

见下图

如果点击 CA2253 查看官方文档,你会惊喜地发现精致的 404 页面(至少在 2021.11.22 06:46 时是这样)

虽然不是 Warning 甚至不是 Info,但影响 IDE 观感,这里记录一下原因和解决方法

原因

原文见 Why ILogger is not able to use the same position of the arguments array multiple times?

Microsoft.Extensions.Logging 使用了结构化日志(structured logging), Roslyn Analyzers 会自动在日志输出语句处检查代码的质量,其中就包括 CA2253

Microsoft created a set of analyzers called Microsoft.CodeAnalysis.FxCopAnalyzers that contains the most important “FxCop” rules from static code analysis, converted to Roslyn analyzers. These analyzers check your code for security, performance, and design issues, among others. The documentation for FxCop analyzers in Visual Studio can be found at docs.microsoft.com/visualstudio/code-quality/install-fxcop-analyzers.

解决方法

将数字占位符更换为以变量名命名的占位符,如下图

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据