Найти конструкторов с более чем 3 параметрами в каталоге шаблонов Resharpers - PullRequest
7 голосов
/ 27 июля 2011

Можно ли создать шаблон поиска в каталоге шаблонов Resharper, чтобы найти все конструкторы с более чем 3 параметрами?
Если да, то как?
Моя проблема в том, что я не знаю, как сказать Resharper, что должны соответствовать только определения конструктора.

Ответы [ 2 ]

3 голосов
/ 17 августа 2011

Насколько я знаю, шаблоны в Resharper могут быть сопоставлены только в методе.Таким образом, вы не можете сопоставить объявление конструктора.

Я только что попробовал следующий шаблон:

new $type$($args$)

Где тип это заполнитель для типа (кто бы мог догадаться?) И аргументовпо крайней мере, 3 аргумента.Это действительно находит все использует как минимум 3 аргумента конструкторов, но он не найдет конструкторы, которые не используются, и, что наиболее важно, он найдет это:

public class MyClass : MyAbstractClass
{
    public MyClass(int foo1, int foo2) : base(foo1, foo2, 0)
    {
        // ...
    }
}

Так что, возможно,если вы думаете, что у вас будут эти случаи, вместо использования шаблонов Resharper вы должны попытаться использовать регулярное выражение Find.Это может быть сложно, потому что, если подумать, синтаксис C # довольно сложный, но вы можете кое к чему ...

Редактировать: Я адаптировал поиск регулярных выражений в Visual Studio для объявления конструктора, распознает новые строки и внаименьшее количество аргументов (которые могут иметь необязательные значения):

^(:b|\n)*((public|internal|private|protected|static|sealed)(:b|\n)+)+:i(:b|\n)*\((:b|\n)*:i(:b|\n)+:i(:b|\n)*(|\=(:b|\n)*:a*(:b|\n)*)(,(:b|\n)*:i(:b|\n)+:i(:b|\n)*(|\=(:b|\n)*:a*(:b|\n)*))^2(,(:b|\n)*:i(:b|\n)+:i(:b|\n)*(|\=(:b|\n)*:a*(:b|\n)*))*\)

это ужасно, главным образом потому, что пользовательское регулярное выражение VS не имеет никакого перевода для стандарта \ w , {2,} и ? .

2 голосов
/ 26 января 2017

Я знаю, что этот вопрос специально предназначен для R # 6.0, но я хотел дать ответ для R # 2016.3, так как у меня недавно был тот же вопрос.

Resharper 2016 (.3.1)


Поиск по шаблону позволяет этот тип поиска. Вот что вам нужно сделать:

Выберите Resharper> Найти> Поиск по шаблону

Добавить три метки-заполнителя:

  • args : Argument Placeholder - установите минимальное / максимальное количество параметров, которое вы хотите найти
  • код : заполнитель выписок - не устанавливать ограничения на количество выписок
  • введите : идентификатор заполнителя - введите без регулярного выражения

Убедитесь, что для шаблона поиска установлено значение C#

Установите следующий шаблон:

public $type$($args$) 
{
$code$
}

Установите Look In так, как вам нужно (например, решение). И нажмите Find.

У вас должно получиться окно поиска, которое выглядит так:

Search With Pattern

Здесь будут найдены все (публичные) конструкторы, которые содержат количество интересующих вас параметров. Я смог успешно использовать это в нескольких решениях. В качестве дополнительного бонуса, кажется, очень рад найти конструкторов со списками параметров по нескольким строкам, а не по одной.

...