SonarLint:S2760 - 可能的错误

SonarLint: S2760 - possible bug

SonarLint 规则 2760:顺序测试不应检查相同的条件

这命中了 运行 一个方法的语句并且返回了很多误报。我能给出的最简单的例子是:

if (_rnd.NextDouble() < Settings.RandomChance)
{
    MethodA();
}
if (_rnd.NextDouble() < Settings.RandomChance)
{
    MethodB();
}

期望的结果是有时 MethodA 是 运行,有时 MethodB 是 运行,有时两者都是 运行。

我们已经就此规则进行了一些讨论,您可以在此处查看:

这条规则似乎有很多极端情况。我们绝对不想维护此规则的例外列表,因此我们最安全的选择是默认禁用该规则。我为此创建了一个 GitHub 问题 (https://github.com/SonarSource/sonarlint-vs/issues/419),您可以在那里添加更多示例。