Генерировать сообщение об ошибке, когда в коде используется «asyn c void» - PullRequest
0 голосов
/ 04 апреля 2020

Существует множество Вопросов и Ответов по теме async void. И мы все согласны с тем, что это не очень хорошая вещь, и я считаю, что во всех случаях этого можно избежать. Вот почему я хочу создать сообщение об ошибке Visual Studio, когда оно используется.

В других случаях это был успех, например: Когда функция возвращается с Task, Visual Studio выдает предупреждение CS4014 . И мы настроили дескриптор этого предупреждения как ошибку с механизмом Directory.Build.props . Вот его код:

<Project>
  <PropertyGroup>
    <WarningsAsErrors>CS4014</WarningsAsErrors>
  </PropertyGroup>
</Project>

Как видите, CS4014 обрабатывается как ошибка. Это работает отлично. Но для async void предупреждающее сообщение отсутствует, поэтому мы не можем настроить его на обработку как ошибку.

Есть ли способ добавить пользовательские сообщения об ошибках / предупреждения в процесс сборки msbuild ?

Создание собственных сообщений об ошибках / предупреждений будет очень полезно во многих случаях.

1 Ответ

1 голос
/ 14 апреля 2020

Есть ли способ добавить пользовательские сообщения об ошибках / предупреждениях в процесс сборки msbuild?

Существует расширение VS с именем AsyncFixer , которое может обнаружить асинхронное отображение c void method.

Однако эти асин c void методы просто превращаются в предупреждения, а не в ошибки. И кажется, что режим WarningsAsErrors xml не работает для него.

Так что , если вы все еще хотите рассматривать их как ошибки, я предлагаю вам создать новую конфигурацию под названием Production в VS IDE, а затем добавьте их в Directory.Build.props:

<Project>
 <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Production|AnyCPU'">
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
</Project>

В этой Конфигурации он будет рассматривать все предупреждения как ошибки, и вам будет легко найти каждый асинхронный код. c void методы. (Это лучшая функция, которую я протестировал для вашей проблемы). После этого вы можете изменить конфигурацию обратно на любую другую, чтобы построить свой проект. Это будет

Подробнее об этой функции, вы можете сослаться на этот связанный случай .

Кроме того , если он все еще не удовлетворяет вас, Вы должны создать анализатор для обнаружения Asyn c Методы .

Надеюсь, это может помочь вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...