Ложное срабатывание:
http://prntscr.com/ul3on7
Компайлер шарпа на такое не ругается
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Ложное срабатывание:
НС>http://prntscr.com/ul3on7
НС>Компайлер шарпа на такое не ругается
Я правильно понимаю, что вот в этом примере никаких предупреждений быть не долджно?
public const string Default = "";
public static void FooBar(string? sectionName = Default)
{
baz(sectionName);
static int baz(string s) => s.Length;
}
Здесь должно быть предупреждение и VS 2019 16.7 его выдает, ведь sectionName параметр легко может быть null, если туда передан null насильно: `FooBar(null)`.
Если бы код выглдядел бы так: sectionName ??= Default; вот тогда предупреждения не будет, ни от R#, ни от компилятора.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Ложное срабатывание:
НС>http://prntscr.com/ul3on7
НС>Компайлер шарпа на такое не ругается
Дефолтное значение будет использоваться только если никакого аргумента не передали, поэтому оно не влияет на анализ ни в Rider ни в компиляторе. Значение имеет только тип параметра, который в вашем примере допускает передачу `null`. Т.е., например, следующий код будет создавать компиляторный ворнинг потому что `NullReferenceException` в нем действительно случится:
#nullable enable
public static void Main() => M(null);
static void M(string? s = "notnull") => s.ToString(); // warning here
Можно проверить
здесь
Судя по скриншоту для метода `ConfigureSelectionAndValidate` не включены наллабл референс типы и компилятор не ругается именно поэтому.
В этом случае Rider может полагаться либо на JetBrains.Annotations атрибуты для этого метода либо на выбранный режим анализа.
Вы не могли бы показать сигнатуру метода `ConfigureSelectionAndValidate`, есть ли в нем какие-либо атрибуты? И какой выбран режим анализа (Optimistic или Pessimistic) на странице Editor — Inspection Settings?