2015-09-18 2 views
0

SonarLint правило 2760: Последовательные тесты не должны проверять те же условияSonarLint: S2760 - возможная ошибка

Это ударяет по заявлениям, которые работают метод и возвращающих много ложных срабатываний. Простейший пример, который я могу дать это:

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

Желаемый результат состоит в том, что иногда Methoda запускается, иногда MethodB запускается, а иногда и запускаются.

+1

Просто примечание. Насколько я могу судить, нет никакой гарантии, что любой из них будет работать. –

+0

да, это тоже. =) - Точка заключается в том, что сонар не должен помечать эти типы предметов одинаково. Вероятно, было бы хорошо разбить его на 2 правила - при этом не проверяет методы ... –

ответ

1

У нас были некоторые дискуссии по этому правилу уже, что вы можете проверить здесь:

Это кажется, что есть много угловых случаев это правило. Мы определенно не хотим содержать список исключений из этого правила, поэтому наша самая безопасная ставка будет заключаться в том, чтобы отключить правило по умолчанию. Я создал проблему GitHub (https://github.com/SonarSource/sonarlint-vs/issues/419), для этого вы могли бы добавить еще несколько примеров.

+0

Спасибо, я разместил свои мысли там. Я также теперь знаю, где искать сначала, прежде чем отправлять в SO. –