【发布时间】:2016-02-19 15:50:13
【问题描述】:
我想知道如果您使用 String.Equals(string),为什么静态代码分析(VS 2015)不会导致错误。所以
"file".Equals("FILE")
不会导致代码分析错误,而
String.Compare("file", "FILE", true)
确实会导致 CA 1307 错误。
此规则的文档在MSDN 上说
许多字符串操作,最重要的是 Compare 和 Equals 方法,提供了一个接受 StringComparison 枚举值作为参数的重载。
只要存在采用 StringComparison 参数的重载,就应该使用它而不是不采用此参数的重载。通过显式设置此参数,您的代码通常会更清晰、更易于维护。
据此,我预计第一个示例会导致 CA 1307 错误。
因此在这种情况下不抛出错误在某些情况下可能会非常危险,并导致“错误”的应用程序。
我错过了什么吗?
如果这是设计使然,有什么方法可以实现预期的行为?
【问题讨论】:
标签: c# static-analysis string-comparison fxcop static-code-analysis