Как рассматривать ВСЕ C # 8 обнуляемые ссылочные предупреждения как ошибки? - PullRequest
2 голосов
/ 02 октября 2019

Использование Visual Studio 2019 v16.3.2 с проектом .NET Core 3.0, установленным на C # 8, и включенными ссылочными типами, допускающими обнуляемые значения.

<PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <LangVersion>8.0</LangVersion>
    <Nullable>enable</Nullable>
</PropertyGroup>

Если я настрою его для обработки всех предупреждений как ошибок:

warnings as errors radio button selected

<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<WarningsAsErrors />

Сообщает о других предупреждениях как об ошибках. Например, CS0168 The variable 'x' is declared but never used сообщается как ошибка. Но все обнуляемые ссылочные предупреждения все еще сообщаются как предупреждения. Например, CS8600 Converting null literal or possible null value to non-nullable type. по-прежнему отображается как предупреждение.

Как мне трактовать все предупреждения о ссылках, обнуляемые с ошибками, как ошибки?

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

Редактировать: установка определенных предупреждений, которые будут обрабатываться как ошибки, помещает <WarningsAsErrors>CS8600;CS8602;CS8603</WarningsAsErrors> в csproj и не работает.

1 Ответ

1 голос
/ 03 октября 2019

Проблема заключалась в том, что файл .editorconfig переопределял настройку Visual Studio для обработки всех предупреждений как ошибок со многими строками, например:

dotnet_diagnostic.CS8602.severity = warning

Это заставляет CS8602 быть предупреждением.

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

...