SonarLint:S2760 - 可能的错误
SonarLint: S2760 - possible bug
SonarLint 规则 2760:顺序测试不应检查相同的条件
这命中了 运行 一个方法的语句并且返回了很多误报。我能给出的最简单的例子是:
if (_rnd.NextDouble() < Settings.RandomChance)
{
MethodA();
}
if (_rnd.NextDouble() < Settings.RandomChance)
{
MethodB();
}
期望的结果是有时 MethodA 是 运行,有时 MethodB 是 运行,有时两者都是 运行。
我们已经就此规则进行了一些讨论,您可以在此处查看:
- https://jira.sonarsource.com/browse/RSPEC-2760在评论
- https://github.com/SonarSource/sonarlint-vs/issues/383
这条规则似乎有很多极端情况。我们绝对不想维护此规则的例外列表,因此我们最安全的选择是默认禁用该规则。我为此创建了一个 GitHub 问题 (https://github.com/SonarSource/sonarlint-vs/issues/419),您可以在那里添加更多示例。
SonarLint 规则 2760:顺序测试不应检查相同的条件
这命中了 运行 一个方法的语句并且返回了很多误报。我能给出的最简单的例子是:
if (_rnd.NextDouble() < Settings.RandomChance)
{
MethodA();
}
if (_rnd.NextDouble() < Settings.RandomChance)
{
MethodB();
}
期望的结果是有时 MethodA 是 运行,有时 MethodB 是 运行,有时两者都是 运行。
我们已经就此规则进行了一些讨论,您可以在此处查看:
- https://jira.sonarsource.com/browse/RSPEC-2760在评论
- https://github.com/SonarSource/sonarlint-vs/issues/383
这条规则似乎有很多极端情况。我们绝对不想维护此规则的例外列表,因此我们最安全的选择是默认禁用该规则。我为此创建了一个 GitHub 问题 (https://github.com/SonarSource/sonarlint-vs/issues/419),您可以在那里添加更多示例。