CA2241: Provide correct arguments to formatting methods除非您使用字符串资源作为格式字符串参数,否则效果很好。
有没有人知道那里的自定义规则对使用字符串格式的资源的String.Format调用做了同样的事情?
例如,而不是这个(规则CC2241标志):
String.Format( "{0} {1}", value );
我需要一个规则来检测Resources.MessageWithTwoPlaceholders是一个定义为“{0} {1}”的资源的问题。
String.Format( Resources.MessageWithTwoPlaceholders, arg );
我已经看过编写一个自定义规则来处理这个问题,看起来很可行,但这是一个相当重要的工作。
答案 0 :(得分:1)
此类规则存在的问题是格式字符串在多个程序集中可能出错,而不一定是要分析的程序集。
更难的是,您不是从资源管理器加载资源,而是从生成的资源类加载资源,该资源类抽象出资源文件的nae,资源名称的名称和实际值资源。
您将要遇到的另一个问题是,将资源数据加载到内存中可能需要您实际加载程序集,而不是仅仅对其进行内省,除非您想自己解析资源。
最后,在许多翻译条件下,资源文件仅在开发时使用一种语言构建,翻译后期编译并在稍后阶段添加到产品中......
所有这一切,应该是可能的。查找内容很难,但可以从现有代码中复制实际规则。