Имя метода изменения пользовательских шаблонов Resharper

Я хочу изменить подпись метода с

public static async Task Load()

to

public static async Task LoadAsync()

Как определить пользовательские шаблоны в ReSharper?


person lone    schedule 19.03.2014    source источник
comment
Не уверен, почему за это проголосовали... Вскоре я опубликую ответ.   -  person Igal Tabachnik    schedule 19.03.2014


Ответы (1)


Если я вас правильно понял, вы хотите определить собственный шаблон для изменения подписи async Task Method() на async Task MethodAsync(). Если это так, это возможно с помощью пользовательских шаблонов!

Для этого перейдите в «Параметры ReSharper», затем Code Inspection → Custom Patterns:

  • Нажмите Add Pattern

  • В новом диалоговом окне убедитесь, что выбрано Replace

  • Введите шаблон поиска и замены точно так, как они показаны на изображении ниже. В зависимости от ваших версий ReSharper параметры-заполнители должны отображаться автоматически. Если нет, нажмите кнопку «Добавить заполнитель».

  • Дважды щелкните заполнитель method и добавьте следующее регулярное выражение: \b\w+(?<!Async)\b — это говорит только о том, что имена методов, НЕ заканчивающиеся на Async, уже должны соответствовать.

  • В поле со списком Pattern Severity выберите Show as Hint или Show as Suggestion, в зависимости от ваших предпочтений.

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

Теперь ReSharper будет помечать все public async Task методов, которые еще не заканчиваются асинхронным:

И теперь вы можете нажать Alt-Enter, чтобы быстро это исправить!

person Igal Tabachnik    schedule 19.03.2014
comment
Очень-очень благодарна вам за ответ, я снова думаю, если это частная статическая задача, публичная задача Как ее определить? - person lone; 20.03.2014
comment
Вы можете создать другой шаблон, почти идентичный, но с использованием ключевого слова private. - person Igal Tabachnik; 20.03.2014
comment
Странно, он должен соответствовать любым параметрам, независимо. Заполнитель $parameters$ должен учитывать 0 или более параметров, поэтому он работает, например, как с Foo(), так и с Foo(string arg). Правильно ли определен ваш заполнитель? - person Igal Tabachnik; 20.03.2014
comment
@IgalTabachnik Важное примечание: async в шаблоне поиска является избыточным, Resharper ему не соответствует. Этот шаблон также будет выделять public Task Load(){ } (что в данном случае не обязательно плохо) - person i3arnon; 15.07.2014
comment
это потрясающе, однако, вы случайно не знаете, как я могу найти ЛЮБЫЕ методы во всем решении, которые имеют как минимум 2 одинаковых параметра? - person Alex Gordon; 23.05.2016