WedX - журнал о программировании и компьютерных науках

Как заставить VS2019 жаловаться на методы, которые ведут себя асинхронно, но имеют имена без суффикса Async?

Несколько недель назад мой VS2019 сделал множество предложений о различных методах в одном из наших API, которые вели себя асинхронно (возвращали задачу, содержали ожидаемые вызовы), но не назывались «... асинхронными».

Я поместил его в список дел для проверки и исправления как низкий приоритет, но теперь я пришел посмотреть на него, VS, кажется, перестал вносить предложения.

Этот вопрос был предложен как дубликат; Я просмотрел его, и он может решить вопрос, но я все еще озадачен по нескольким причинам:

  • Я не помню, чтобы когда-либо следовал этой процедуре
  • Контроль версий не указывает, что кто-либо когда-либо помещал файл .editorconfig в репо (а затем удалял его)
  • У меня сложилось впечатление, что были сделаны предложения для методов, которые возвращали Task, awaited что-то в теле, но не имели модификатора async, на который опирается связанная техника (но я мог неправильно помнить здесь, и, возможно, я был глядя на асинхронный интерфейс, а не на асинхронную реализацию метода интерфейса)

Итак, я предполагаю, что мой вопрос заключается в том, что, помимо метода в связанном возможном дубликате, есть ли какой-либо другой способ, которым VS может сделать предложения о плохом названии методов с асинхронным поведением? Возможно, я установил некоторые расширения для анализа кода, не осознавая этого?


  • У вас была возможность взглянуть на этот вопрос? 05.03.2020
  • Спасибо @FrancescoB. - это поможет. Хотя я уверен, что никогда не делал эту процедуру раньше, поэтому мне все еще любопытно, почему мой VS делал это раньше, а теперь нет?! 05.03.2020
  • Отвечает ли это на ваш вопрос? Как получить предупреждение в Visual Studio, если асинхронные методы не заканчиваются на «асинхронный»? 05.03.2020
  • Обратите внимание, что ответы на этот вопрос (который соответствует этому) сосредоточены на методах с модификатором async, который является подмножеством асинхронных методов. 05.03.2020
  • Да, что заставляет меня задуматься. Я думал, что методы, которые мне предлагали, не имели асинхронного модификатора, но я мог вспомнить интерфейс (у которого не было асинхронного модификатора, только возвращаемый тип Task) 05.03.2020
  • Вы выяснили, было ли это расширением? 05.03.2020
  • Я добавил MCA, Roslynator и AsyncFixer, но ни один из них, похоже, не сгенерировал сообщение. Я, вероятно, продолжу процесс в связанном вопросе и оставлю его открытой головоломкой. 05.03.2020

Ответы:


1

Вы также можете использовать инструмент NDepend, интегрированный в Visual Studio, CI и Azure DevOps, чтобы использовать это правило кода (с NDepend правилом кода является текстовый запрос C# LINQ):

// <Name>Async method not suffixed with Async</Name>
warnif count > 0
from m in Application.Methods
where m.IsAsync && !m.SimpleName.EndsWith("Async")
select m

Вот результат этого правила на кодовой базе NopCommerce:

NЗависимое правило кода для обнаружения асинхронных методов без суффикса Async

Отказ от ответственности: я работаю в NDepend

06.03.2020

2

На мой взгляд, есть пара расширений, которые могут быть задействованы в этом:

  • Рослинатор
  • Анализ кода Майкрософт

Вы всегда можете проверить дату установки ваших расширений, открыв «Расширения» > «Управление расширениями», нажав на них и посмотрев вправо («Дата установки»):

Управление расширениями

05.03.2020
Новые материалы

Как создать диаграмму градиентной кисти с помощью D3.js
Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


Для любых предложений по сайту: [email protected]