Ребята из JetBrains выпустили новый решарпер и теперь он доступен для "покупки" и скачивания с их официального сайта.

Пожалуй самая интересная фича нового решарпера - поддержка C# 3.0 и LINQ. Но первая вещь которую я заметил, это "Reformat" переименовали в "Cleanup Code", и поначалу, это сбивало с толку. Зато сейчас эта фича поддерживает профайлы, т.е. различные профайлы могут делать различные "очистки кода": переход к авто-свойствам, использование анонимных типов, формирование readonly полей, если это возможно и многое другое.

 

Но единственное, что у меня пока не получилось - это редактирование стандартных профайлов.

Следующее, на что я обратил внимание это инициализация объектов, к примеру если я напишу

Task t = new Task(); t.Name = "Test";

То решарпер мне предложит поступить следующим образом:

Task t = new Task {Name = "Test"};

Аналогичным образом решарпер предлагает использовать implicit type variable:

Решарпер советует использовать var везде, где это возможно. Такое решение далеко не всегда оправдано, поэтому я отключил этот функционал.



Зачатки JetBrains.Annotation были еще в решарпере версии 2.5. Если помните был такой "Null Reference Analysis", который оповещал разработчика о возможных NullReferenceException в коде. Чтобы избежать такого анализа разработчики добавляли к свойствам, атрибуты NotNull или CanBeNull, которые решарпер позже использовал для инициализации состояния переменных. В новой же версии количество таких атрибутов значительно увеличилось. Скажем, если вы хотите явно указать, что ваш строковый параметр будет обрабатываться с помощью string.Format, то можете написать следующее

[StringFormatMethod("key")] public void Put(string key, params object[] args) { ... }

После чего вызвав эту функцию

Put("testing {0}, {1}, {2}", 1, 2);
решарпер подскажет, что переменная для аргумента {2} отсутствует. Но использования этой фичи требует включения нескольких JetBrain библиотек в ваш проект, что несколько смущает...

Довольно удобным стал CamelHumps Completion, позоволяющий писать лишь заглавные буквы ключевых слов, названий классов, переменных:

if(CVM.I.SV(SCV.FU 
После нажатия магического сочетания клавиш <Ctrl-Shift-Enter>, получаем
if (CodeViewManager.Instance.SupportsView(StandardCodeViews.FindUsages)) { }

Как я уже упоминал, теперь решарпер полностью поддерживает C# 3.0 и LINQ, что не может не радовать.

 

Recent Edits позволяет быстро получить доступ к недавно редактируемым участкам кода (CTRL + "-" уже просто достал!):

 


И в заключение, хочу добавить, что создатели решарпера клянутся, что он стал быстрее, особенно в обработке ASP.NET кода.

Полезные ссылки:

Официальный сайт решарпера

Новые фичи четвертого решарпера 

Скачать Resharper 4.0 

Купить Resharper 4.0 

Блог Ильи Рыженкова, продукт-менеджера компании JetBrains