24 ноября 2009 г.

Обустраиваемся: VS tools

Предыдущая серия. Весь сериал.

Если не указано явно - всё бесплатно, проверено и используется на практике. В .NET проектах (есди это ещё не видно из контекста;)). Курсивом – комментарии со стороны.

Code analysis & control:

  • FxCop он же VSTS Code Analysis. Для любителей экстрима – туториал по написанию custom rules. Другой актуальной документации нет, т.к. планируется тотальное перелопачивание всего API (сроки неизвестны), зато есть форум и блог.
  • StyleCop aka Source Analysis. Требует обработки напильником (отключения самых надоедливых правил).
  • Reflector. Сборка адд-инов к рефлектору.
  • Refractor. Незаслуженно малоизвестный инструмент для получения call-графов, диаграмм зависимостей и т.п из сборок. Для изучения кода юзабельней Dependency Graph из VS 2010b2 (ждём релиза?). Полезен для оценки общего уровня. Самый простой критерий – можно ли понять как класс работает, пользуясь только class methods.

Perf:

  • CLR profiler. Слегка мёртв, единственный недостаток – бесплатность;)

VS 2008 add-ins:

  • Power commands for VS 2008. Самая полезная вещь – автоматическое форматирование документов (и сортировка using) при сохранении. Крайне полезна при прохождении квеста “StyleCop approved”. Слегка глючноват, главная проблема – ругается “нельзя изменить документ” во время build’a.
    Кроме этого умеет:
    • копировать путь/открывать в проводнике/запускать cmd для любого элемента/папки в Solution;
    • сворачивать все елементы в Solution explorer;
    • копировать-вставлять элементы. Иногда удобней чем drag-drop;
    • закрывать все окна (а не “все кроме текущего”);
    • кучу менее полезных действий (см. описание на сайте)
  • Resource refactoring tool. Занимается только тем, что вытаскивает выделенную строку в ресурсы. Иногда не работает под x64.
  • Build Version Increment Add-in. Настраиваемый способ инкремента. При включённом автоформатировании - жалобный диалог во время сборки. Багфича от power commands.
  • Tytan.NET. Полезен разве что созданием конструктора/свойств по выделенным переменным.

Version control:

  • Visual SVN Server. Всё что надо для локального хостинга мелких репозитарев: MMC-консоль, Windows-авторизация, настроенный https из коробки.
  • AnkhSVN. Единственная правоверная (через SCC) интеграция VS и SVN.
  • Tortoise SVN. Исправляет глюки Анк’а и вносит свои собственные. Кто-то из этой парочки нерегулярно рушит репозитарий вплоть до мусора на выходе. Возможно, виноват VisualSVN, но поскольку случалось всего раза два с перерывом в полгода – несмертельно.
  • SVN Monitor. Если вам не хватает popup’ов в области уведомления.

WPF Tools (VS 2008):

DB tools:

  • SSMS Tools Pack. Крайне фичастая сборка – смотрим описание.
  • VSTS 2008 Database Edition GDR R2. Проекты БД для любой из поддерживаемых СУБД (кроме default dbms - IBM DB2, возможно - Oracle, MySQL). Одна из немногих вещей которая оправдывает приобретение VSTS для разработчика.

Напоследок - VS Gallery. При некоторм терпении найдётся всё вышеперечисленное.
HINT: выбор в одной категории (например, Visual Studio Versions) не сбрасывает выбор в другой (например, Cost Categories).
HINT#2: Есть RSS – можно получать уведомления о новых продуктах/обновлениях.

Комментарии и дополнения requested.
Про какие программы стоит написать подробней?

UPD (по заявкам):

  • CodeRush Xpress for C# (спасибо Кириллу Осенкову за ссылку!) – бесплатна для пользователей VS (кроме Express-версий). Из минусов – отсутствие каких-либо интересностей (большую часть предлагаемых рефакторингов проще сделать перетаскиванием текста/сниппетами), лёгкая тормознутость (но до решарпера ещё расти и расти;)).
    Мелкий баг – из-за кастомной настройки менюшек окно настроек находится только через подсказки.
    С выходом 2010й студии (generate from code, reference highliting) окончательно потеряет смысл. Если всё-таки не потеряли интереса - статья–обзор.
    NB: всё вышесказанное относится только к бесплатной версии. Никаких наездов;)
    NB#2: существует альтернативная точка зрения.
  • GhostDoc. Генерирует XML комметарии, анализируя название метода, класса итд, по нажатию шорткарта. Гибкие настройки. Умеет актуализировать комментарии при изменение параметров функций (типы параметров, добавление/удаление параметра), перенимает коментарии базового метода. Незаменима при включенной опции проекта "Генерировать XML документацию. Спасибо Kalina9001!
  • PInvoke Visual Studio Add-in. Установка с бубнами для VS 2008. Сервис для работы с www.pinvoke.net – сборнику сигнатур для platform invoke. Пример использования
    Снова спасибо Kalina9001!
  • Раз уж речь зашла об интернет-сервисах: www.connectionstrings.com – справка по форматам строк соединения.

8 комментариев:

  1. Так же из минусов кодража и рефактора - дикая тормознутость и безумная сложность настройки. Хотя эти тузы безусловно производят "вау эффект", когда их первый раз видишь :)

    ОтветитьУдалить
  2. А как же WinDbg, MS LogParser, MS Remote Debugger и Reflector.

    ОтветитьУдалить
  3. >А как же WinDbg, MS LogParser, MS Remote Debugger и Reflector.

    Reflector - будет отдельный пост.
    WinDbg, MS LogParser, MS Remote - не пользую, возможностей студии за глаза хватает.
    Если у вас будет время - распишите краткий комментарий по каждой, добавлю.

    Спасибо!

    ОтветитьУдалить
  4. Reflector - есть отдельный пост:
    http://whocodes.blogspot.com/2009/11/reflector-add-ins-pack.html

    ОтветитьУдалить
  5. > Build Version Increment Add-in
    Работает только с .NET! Предупреждать надо.

    ОтветитьУдалить
  6. Вы забыли о Visual Assist - это классная примочка.

    ОтветитьУдалить
  7. >Вы забыли о Visual Assist.
    А так же о решарпере и кодраше.
    Как-то не с руки рекламировать коммерческие вещи при наличии бесплатных аналогов.
    Причём получается баш на баш по производительности: что тормозит пользователь из-за бедности функционала freeware, что студия - из-за его перегруженности.
    Разумеется, всё субъективно:)

    Кстати, какими вкусностями пользуетесь от assist'а? Почти весь рефакторинг есть из коробки, зато понравились автодополнение/скобочки... Что-то пропустил?

    ОтветитьУдалить