Git Top Libraries
59 subscribers
10 photos
123 links
Топовые библиотеки из GitHub
Download Telegram
День пятьсот восемьдесят пятый. #ЧтоНовенького
Управляем Уровнем Анализа Кода в .NET5
В последних версиях .NET добавлены новые анализаторы кода, позволяющие вам автоматически находить скрытые недочёты в коде, которые могут приводить к ошибкам. При этом в анализаторы кода редко добавлялись новые предупреждения, т.к. это технически является критическим изменением для пользователей, установивших предупреждения как ошибки.

В .NET5 в компилятор C# добавлена настройка AnalysisLevel, позволяющая безопасно добавлять новые предупреждения в анализаторы. Уровень анализа по умолчанию для всех проектов на .NET5, будет установлен на 5. Это означает, что будут показываться новые предупреждения, введённые в .NET5.

Для предыдущих версий платформы уровень по умолчанию установлен на 4, что не мешает вам самостоятельно установить его в значение от 0 до 3.
Вот, как это сделать:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<AnalysisLevel>5</AnalysisLevel>
</PropertyGroup>
</Project>

Если вы всегда хотите использовать последний поддерживаемый уровень анализа, укажите значение latest. Также можно опробовать экспериментальные методы анализа, указав значение preview:
<AnalysisLevel>latest</AnalysisLevel>
Обратите внимание, что при этом результаты анализа могут различаться на разных машинах в зависимости от доступного на машине SDK и уровня анализа, который он предлагает.

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

Вот некоторые новые предупреждения на уровне анализа 5:
CA1416Предупреждение: Код работает не на всех платформах
CA2013Предупреждение: Не используйте ReferenceEquals с типами-значениями
CA2200Предупреждение: Выбрасывайте исходное исключение, чтобы сохранить стек вызовов
CS0185Ошибка: lock недопустим на нессылочных типах
CS7023Ошибка: Недопустимо использовать as или is со статическими типами
CS8073Предупреждение: Выражение всегда ложь или истина

Источник: https://devblogs.microsoft.com/dotnet/automatically-find-latent-bugs-in-your-code-with-net-5/