当我们为其中一个项目启用带有“ Microsoft All Rules”规则集超集的fxcop时,它也启用了CA1309,并立即开始抱怨诸如此类的构造:

if (translationItem.Description == "Description")


显示警告,例如:

c# - CA1309仍然对根据.NET 4.5.1编译的源有效吗?-LMLPHP
查看string here的参考源时,它表明operator ==使用String.Equals,而EqualsHelper则使用Equals。调用CA1309建议的EqualsHelper重载时,将调用相同的==。因此,似乎Microsoft.CodeAnalysis.FxCopAnalyzers运算符已在使用序数比较。

所以我的问题是,我们是否应该将上面的代码片段重构为:

if (string.Equals(translationItem.Description, "Description", StringComparison.Ordinal))


如果是这样,我们为什么要这么做?

附言我们确实打算在上面的代码片段中使用区分大小写的字符串比较。

P.S.2。我们使用 nuget包即时运行代码分析。

最佳答案

答案不多,但根据评论的愤世嫉俗的要求,an issue has been raised over at the roslyn github。该问题已解决,已经关闭,该修复程序将以里程碑15.3的形式发布。

关于c# - CA1309仍然对根据.NET 4.5.1编译的源有效吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39246924/

10-09 15:49