Новини про R# з перших рук інтерв’ю із Сергієм Шкредовим

Ексклюзивні ІТ-новини, огляди та інтерв'ю

Новини про R# з перших рук: інтерв'ю із Сергієм Шкредовим

Впевнений багато .Net-розробники знають і поважають відоме розширення для MS Visual Studio - ReSharper (R #). Цей продукт, створений пітерською софтверною фірмою JetBrains, зумів отримати світове визнання. Наприкінці минулого року вийшла його сьома версія, яка також забезпечує повну підтримку нової Visual Studio 2012, при цьому зберігаючи сумісність зі старими версіями VS. Другою важливою особливістю новогоReSharper 7стала підтримка програм для Windows 8 та WinRT.

Слідом за версією невдовзі було оновлення 7.1, яке привнесло величезну кількість поліпшень і доробок (докладніше з якими краще ознайомитися окремо тут і тут). У зв'язку з виходом цього важливого мажорного релізуReSharperми вирішили поговорити з Сергієм Шкредовим, product manager'ом JetBrains, щоб з «перших рук» дізнатися про останні новини та найближчі перспективи у розвитку цього надпопулярного вітчизняного інструменту.

сергієм

Незважаючи на те, що більшість наших читачів не тільки знають, що таке ReSharper, але й активно використовують його у своїй роботі, давайте коротко пояснимо всім іншим, що ж таке ReSharper сьогодні? Дуже коротко - які його основні можливості?

Ніколи не міг дати короткої відповіді на таке запитання.

Якщо стверджувати, що ReSharper - це просто плагін до Microsoft Visual Studio, то це не зовсім так, тому що на платформі ReSharper побудований декомпілятор dotPeek, також як існуєReSharper command line toolдля запуску аналізу коду на сервері (зараз лише на TeamCity).

З іншого боку розглядати ReSharper якповноцінну IDE теж поки що не можна, тому що у нас немає, наприклад, дебаггера або підтримки систем контролю версій. З основних можливостей ReSharper я би виділив насамперед: аналіз коду, рефакторинги, інтелісенс, навігацію та підтримку unit testing, і все це – для більш ніж 12 мов.

новини
Сергій Шкредов, JetBrains

Я знаю, що нещодавно у вас вийшов новий мажорний реліз, в якому виготовлено дуже багато нового. Що, на вашу думку, буде найбільш цікавим і важливим у ньому для типового .Net-програміста?

Для нас у новому ReSharper 7 було кілька речей, які ми не могли залишити поза увагою. Для підтримки асинхронного завантаження проектів нам довелося переробити асинхронну ініціалізацію самого нашого продукту, і результат мене особисто радує. Ми повністю стартуємо нашу модель коду ще до того, як усі проекти (а у нас їх понад 300) встигають завантажитись. Також хочу відзначити величезну роботу з підтримки нових колірних схем. Лише ікон пройшлося перемалювати понад 800.

Звичайно, перерахувати всі нововведення тут просто неможливо, але саме для .Net програмістів я в першу чергу порекомендував би почитати про наші нові контрактні анотації. Це узагальнення nullness і assertion -анотацій, які дозволяють, наприклад, описати залежність значення out-параметра методу TryGetValue (key, out value) від значення, що повертається. Дуже сильна річ, можна подивитися тут.

До речі, наскільки я зрозумів, в останній ReSharper ви інтегрували свій останній dotTrace з гілки, можна трохи розповісти про його можливості і нововведення?

Зараз в останньому ReSharper 7 інтегруються два наші продукти - це dotTrace і dotCover. Інтеграція dotTrace полягає в можливості профілювати тести та start-upпроект, а ось інтеграція dotCover набагато глибша, він може використовуватиReSharper's Unit tests runnerі має знання про код-модель.

інтерв

Розповідь про кожен із цих продуктів може бути дуже довгим, як і для інших продуктів JetBrains. Тому скажу лише, що Ви можете місяць безкоштовно використати повноцінну версію кожного з них та подивитися, наскільки ці інструменти підходять саме для Ваших потреб. І навіть якщо щось не так завжди можна написати нам відгук, ми це дуже цінуємо.

Можете поділитися з нами, яких успіхів досяг Resharper (у тому числі й комерційних)? Яка динаміка його розвитку?

Про успіхи ReSharper я міг би говорити безкінечно. Головний успіх, або навіть ключ до успіху ReSharper – це команда, яка над ним працює, команда професійних, неординарних та зацікавлених людей, з якою можна не сумніватися у успіху.

ReSharper купують активно та багато. І з кожним роком купують дедалі більше. Ми працюємо над тим, щоб програмування з ReSharper було доступне кожному. Наприклад, для виявлення performance-проблем ми вбудували в ReSharper профілятор, і наші користувачі однією кнопкою можуть зробити снепшот того, що відбувається з продуктивністю саме на їх конфігурації.

Також не можу не відзначити, що ми маємо дуже сильну команду тестування. Звичайно, EAP-програма, як і раніше, дуже важлива для нас, але ми працюємо над тим, щоб навіть EAP-користувачі отримували продукт дуже високої якості. Можу поділитися, що в EAP-програмі для останнього ReSharper 7 брало участь понад 10 тисяч користувачів. У ReSharper зараз понад 35 тисяч unit-тестів і понад 600 integration-тестів, які запускають фічі в живій Visual Studio. Зараз ми працюємо над автоматизацією тестування продуктивності, і ясподіваюся, що колись ми зможемо поділитися напрацюваннями у цій галузі з нашими користувачами.

Існує думка, що 90 відсотків користувачів використовують лише 10 відсотків функціональності ReSharper. Це підтверджується нашими даними зі статистики використання ReSharper. Збільшення відносності є зараз одним з пріоритетів розвитку продукту. Ми дійсно хочемо, щоб наші користувачі використовували ReSharper на 100%.

сергієм

У ReSharper тільки для C# більше 1000 контекстних підказок та пропозицій щодо покращення та автоматичного рефакторингу коду. ReSharper може скласти конкуренцію компілятору C# відповідно до специфікації. Ну і для всіх проблем, з якими ми стикаємося в процесі розробки, ми придумуємо рішення, які закладаємо в продукт, так що в результаті робота йде і задоволення виходить.

Я знаю, що ви дуже щільно взаємодієте у своїй роботі з Microsoft, можете розповісти про вашу співпрацю?

Не можу розповісти тут багато через NDA, але з Microsoft ми працюємо. Під час розробки ReSharper 7 ми взаємодіяли дуже тісно. Звичайно, ми стикаємося з проблемами у багатьох аспектах взаємодії з Visual Studio. Основна проблема тут, напевно, у тому, що extensibility-інтерфейси в VS переважно орієнтовані на зростання IDE саме вшир.

Зараз у VS все зроблено так, що тут легко завести нову проектну систему або реалізовуватиLanguage Serviceдля нової мови. А нам, навпаки, часто треба перекривати існуючу функціональність. Іноді простих способів це зробити просто немає. Як приклад наведу такий факт: функціональність, що відключає IntelliSense VS, коли активний наш, реалізована за допомогою понад 50 класів.

Якщо говоритивідверто, незважаючи на об'єктивно дуже цікавий продукт, найболючіше місце ReSharper на мою думку - це його гальма. Щоб не здаватися голослівним, дозвольте кілька типових прикладів.

Найчастіше гальма VS з активованим ReSharper виявляються при великій кількості відкритих вкладок (витоку пам'яті, ймовірно), також іноді вискакує «помилка компіляції проекту», яка майже завжди зникає після банального перезапуску всієї Студії. І, до речі, на мою суб'єктивну думку саме у 7 версії «помилка компіляції» стала дуже нав'язливою. Що ви можете сказати з цієї гострої теми, що робиться для усунення цих багів і підвищення надійності роботи?

Тут Ви маєте рацію, продуктивність традиційно є причиною номер один за якою користувачі відмовляються від ReSharper. Точніше, я б говорив не про продуктивність взагалі, а саме про гальма, довге відкриття файлів та проектів, затримки при швидкому друку або зависання UI при побудові проекту.

Тут можна довго розмірковувати про природу цих затримок. Перше велике джерело проблем - це архітектура самої Visual Studio, побудована на COM-об'єктах, що працюють тільки в UI-потоку. Наприклад, нам доводиться повністю дублювати всю проектну модель Студії, щоб мати змогу звертатися до неї із різних потоків. На кожному старті нам все одно доводиться синхронізувати.

Крім того ми розбиваємо довгі активності в UI-потоку, щоб не блокувати введення користувача. Є багато проблем, пов'язаних зі складанням сміття в поколінні. Цей процес може бути досить довгим, особливо якщо обсяг зайнятої керованої пам'яті наближається до гігабайта. Тут єдине рішення — це створювати менше об'єктів, і ми постійно займаємось моніторингом.traffic . Буває, що абсолютно нешкідливі конструкції мови C# можуть породжувати буквально сотні мегабайт об'єктів замикання або boxed структур.

інтерв

До речі, одну з таких проблем ми зараз і вирішуємо, вона пов'язана з різним підходом до резолву посилань на складання ReSharper і компілятора і проявляється за наявності проектів з різними версіями рантайму.

Завершуючи цю тему порцією здорової самокритики — які найслабші сторони ви самі бачите в ReSharper, які виклики вас турбують прямо зараз?

Одна з найслабших сторін — те, що нам уже майже 10 років. І проект вже стає дещо неповоротким, нам доводиться значну частину часу приділяти рефакторингу підсистем у яких, з часом, накопичилося багато прихованих залежностей, переписувати та переосмислювати такі модулі для того, щоб мати можливість швидко робити там зміни, коли цього вимагатиме чергова версія Visual Studio .

Є у нас проблеми та зі змінами API, які не дуже просто переживають наші вже не такі рідкісні, як кілька років тому, плагінописачі. Незважаючи на те, що ReSharper спочатку створювався розширюваним, практично всі підсистеми були створені для підтримки CLR-мов, а загальна функціональність ядра багато в чому орієнтована на складність взаємодії з Visual Studio і тому піддається частим змінам. Зараз ми приділяємо особливу увагу консистентності API, що має дозволити більшій кількості користувачів використовувати ReSharper як платформу для вирішення своїх бізнес-завдань.

Насамперед, я хотів би згадати про персональні ліцензії, як найпоширеніший і найдоступніший тип ліцензій. Якщо Ви використовуєте ReSharper як індивідуальний розробник, або просто хочете за власний кошт купити ліцензію таіндивідуально використовувати її на своїй роботі, то персональна ліцензія Вам підходить ідеально, причому її вартість починається від 150$ за C# edition , який обмежений лише відсутністю підтримки VB.Net.

І звичайно, якщо ви MVP, студент, тренер або займаєтеся OpenSource проектом, то отримати таку ліцензію Ви можете безкоштовно. Крім того, практично цілий рік (десь 8 з 12 місяців) у нас відкрито програму EAP для чергової версії ReSharper. EAP-білд також можна використовувати абсолютно безкоштовно протягом місяця, після чого необхідно просто завантажити та встановити новий білд.