1

CA2241:为格式化方法提供正确的参数效果很好,除非您将字符串资源用于格式化字符串参数。

有谁知道那里有一个自定义规则,它对使用字符串格式资源的 String.Format 调用做同样的事情?

例如,而不是这个(规则 CC2241 标志):

String.Format( "{0} {1}", value );

我需要一个规则来检测 Resources.MessageWithTwoPlaceholders 是定义为“{0} {1}”的资源的问题。

String.Format( Resources.MessageWithTwoPlaceholders, arg );

我已经看过编写一个自定义规则来处理这个问题,看起来可行,但付出了相当大的努力。

4

1 回答 1

1

此类规则的问题在于,格式字符串可能在多个程序集中出错,而不一定是正在分析的程序集。

更难的是,您不是从资源管理器加载资源,而是从生成的资源类中加载资源,该类抽象出资源文件的 nae、资源名称的名称和资源的实际值.

您将遇到的另一个问题是将资源数据加载到内存中可能需要您实际加载程序集,而不是仅仅对其进行自省,除非您想自己解析资源。

最后,在许多翻译条件下,资源文件在开发时仅使用一种语言构建,翻译后编译并在后期添加到产品中......

说了这么多,应该是可以的。查找内容很困难,但是可以从现有代码中复制实际规则。

于 2012-01-25T09:18:53.837 回答