需要帮助为 string.Format(...) 创建自定义 FxCop 规则

发布于 2024-12-04 15:30:58 字数 223 浏览 0 评论 0原文

请告诉我如何为以下“String.Format()”方法参数验证编写 FxCOP 自定义规则。

1.string.Format(“{0}aaaa{1}bbb”, x); // {1} 没有占位符替换

2.string.Format(“aaaa{1}bbb”, x); // {1} 没有占位符替换。在字符串文字中,它应该是 {0} 而不是 {1}。

问候,

兰吉特。

Please tell me how to write FxCOP custom rule for the following "String.Format()" methods parameter validation.

1.string.Format(“{0}aaaa{1}bbb”, x); // {1} has no placeholder replacement

2.string.Format(“aaaa{1}bbb”, x); // {1} has no placeholder replacement. Inside the string literal it should’ve been {0} instead of {1}.

Regards,

Ranjeet.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

躲猫猫 2024-12-11 15:30:58

FxCop 1.35、CA2241 中有一条规则可以检查这一点 - 为格式化方法提供正确的参数。根据 这篇博文

该规则似乎已针对 Visual Studio 2010 的代码分析恢复(请参阅 Nicole Calinoiu 的回答),但正如我在评论中提到的,代码分析仅在高级版和旗舰版中可用。

因此,如果您想要检查程序集是否有对 String.Format 的错误调用,并且您没有 Visual Studio 2010 Premium 或 Ultimate,则需要使用 FxCop 1.35。我在 Windows 7 机器上并行运行 FxCop 1.35 和 FxCop 10.0,没有任何问题。

There was a rule to check for this in FxCop 1.35, CA2241 - Provide correct arguments to formatting methods. It was removed from FxCop 1.36 "due to removal of [the] data flow engine" according to this blog post.

The rule seems to have been reinstated for Code Analysis for Visual Studio 2010 (see Nicole Calinoiu's answer), but as I mentioned in a comment, Code Analyis is only available in the Premium and Ultimate editions.

So, if you want to check your assemblies for incorrect calls to String.Format, and you don't have Visual Studio 2010 Premium or Ultimate, you will need to use FxCop 1.35. I'm running FxCop 1.35 and FxCop 10.0 side-by-side on my Windows 7 box without any problems.

离旧人 2024-12-11 15:30:58

您是否有某些特殊原因需要为此制定自定义规则? FxCop 附带的 ProvideCorrectArgumentsToFormattingMethods 规则已验证 String.Format 参数。

Is there some particular reason that you want a custom rule for this? The ProvideCorrectArgumentsToFormattingMethods rule that ships with FxCop already verifies String.Format arguments.

独行侠 2024-12-11 15:30:58

通过阅读 string.Format() MSDN 文档,这两种情况不应该在运行时引发 FormatException 错误吗?

我的理解是,FxCop 的设计目的不是针对运行时错误的有效代码,而是分析程序集是否存在潜在的安全/性能/命名/等问题并报告这些问题。运行时错误超出了其能力范围。

From reading the string.Format() MSDN documentation, shouldn't both of these scenarios raise FormatException errors at runtime?

My understanding is that FxCop is not designed to valid code for runtime errors, but to analyse assemblies for potential security/performance/naming/etc issues and report on those. Runtime errors are beyond its capabilities.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文