Resharper Code Pattern для IDisposable не внутри использования - PullRequest
3 голосов
/ 29 марта 2012

Я хотел бы знать, как создать шаблон кода Resharper (6.1) для поиска и замены следующих проблем:

var cmd = new SqlCommand();
cmd.ExecuteNonQuery();

и превратить его в это:

using (var cmd = new SqlCommand())
{
  cmd.ExecuteNotQuery();
}

и

 StreamReader reader = new StreamReader("myfile.txt");
 string line = reader.Read();
 Console.WriteLine(line);

становится:

using (StreamReader reader = new StreamReader("file.txt"))
{
   string line = reader.ReadLine();
   Console.WriteLine(line);
}

РЕДАКТИРОВАТЬ: Спасибо за ответы, но я ищу все, что реализует IDisposable

Ответы [ 3 ]

2 голосов
/ 29 марта 2012

Шаблон поиска:

var $cmd$ = $sqlcommand$;
$cmd$.ExecuteNonQuery();

Замена шаблона:

using (var $cmd$ = $sqlcommand$)
{
$cmd$.ExecuteNonQuery();
}

, где cmd = идентификатор

и sqlcommand = выражение типа System.Data.SqlClient.SqlCommand

2 голосов
/ 30 марта 2012

Похоже, что на самом деле вы ищете механизм проверки, который ищет IDisposable объекты и обеспечивает их удаление. Если это так, я сомневаюсь, что пользовательские шаблоны были бы правильным подходом - в конце концов, что если вы делаете вызовите Dispose() несколькими строками позже?

Одним из способов реализации этого является использование ReSharper SDK . Фактически, одним из примеров, который поставляется с SDK, является PowerToy, который реализует IDisposable для определенного класса, так что вы можете взять этот код в качестве основы для возможного анализа использования.

0 голосов
/ 29 марта 2012

Используйте инструмент «Поиск с шаблоном» под ReSharper | Найти меню.

В шаблоне поиска убедитесь, что вы выбрали C #, и введите искомый код в поле. Нажмите кнопку «Заменить» в правом верхнем углу и введите код, которым хотите заменить его, в поле «Заменить шаблон».

Вы можете сохранить шаблон поиска и замены, и R # будет использовать его для последующего анализа кода, если вы того пожелаете. Вы также можете добавить дополнительные шаблоны в опции R # в разделе Проверка кода | Пользовательские шаблоны.

...