Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Визуализация списков в отладчике Visual Studio либо новое слово от «BugAid For Visual Studio»

Anna | 18.06.2014 | нет комментариев

Когда доводится просматривать элементы списка (массива) в отладчике Visual Studio, скажем, в окне QuickWatch Зачастую сталкивашься с не удобством просмотра трудного (либо длинного) списка данных. Трудно увидеть, скажем, значения поля всех элементов списка.
Данный пост показывает несколько «встроенных» методов решения этой задачи и вероятности растяженияBugAid.
немного букв, но довольно картинок.

Разглядим примитивный пример.

    public class DataItem
    {
        public string Name { get; private set; }
        public string Description { get; private set; }

        public DataItem(string name, string description)
        {
            Name = name;
            Description = description;
        }
    }

    public class DataItems
    {       
        public List<DataItem> Items { get; private set; }

        public DataItems()
        {
            Items = new List<DataItem>();
        }
    }

Сейчас, просматривая данные в отладчике мы видим приблизительно так:

Типовой QuickWatch не разрешает нам увидеть определенное поле (либо отформатированные поля) сразу для всех элементов списка.

Для решения этой задачи многим разработчикам знаменит откровенный метод реализиции способа ToString():

 public class DataItem
    {
        public string Name { get; private set; }
        public string Description { get; private set; }

        public DataItem(string name, string description)
        {
            Name = name;
            Description = description;
        }
        public override string ToString()
        {
            return String.Format("{0}: {1}", Name, Description);
        }
    }

либо больше «атрибутный» метод:

 [DebuggerDisplay("Name = {Name}, Desciption = {Description}")]
    public class DataItem
    {
        public string Name { get; private set; }
        public string Description { get; private set; }

        public DataItem(string name, string description)
        {
            Name = name;
            Description = description;
        }
    }

нужно подметить, что для больше трудных задач существует аттрибут DebuggerTypeProxy, но и он не предел :) .

Эти два метода отличны, но есть у них тот недочет, что все это должно быть написано в коде программы и откомпилировано. А чай Зачастую необходимо рассматривать данные списка в различных форматах. Останавливать для этого отладчик, менять код либо аттрибут, перекомпилировать и запускать снова — это дюже трудоемкий метод.

Как оказалось, существует растяжение BugAid для Visual Studio (как минимум c VS2010), которое решает эту задачу, а заодно и еще некоторые другие.

Позже установки этого растяжения, возникает меню BugAid с пару опциями и собственным окном «BugAid — QuickWatch».
Сейчас дозволено с поддержкой звездочки предпочесть поля, которые нужно глядеть для всех элементов списка

и вуаля

но это еще не все. даже скорее, все этим только начинается.
а чай хочется замутить какой-нибудь формат для данных и показывать что-нибудь эдакое. В этом случае дозволено воспользоваться “Add Custom Expression“, добавить выражение для элемента списка: что то типа “[obj].Name.Length

и «наслаждаться» кастомным форматом данных без компиляции и «контрибуции»:

а как Зачастую хотелось бы гуглом поискать какие-нибудь данные в трудном списке?
так вот вбиваеам в поле Search то что хочется обнаружить и получаем:



а вот сравнить бы пару элементов списка между собой.
дозволено и это: выбирается 1-й элемент через меню “Select Left Side For Compare“, а после этого 2-й — “Compare to …” и глядим разницу:

ну тогда бы еще отлично бы и пофильтровать данные:


помимо этого, дозволено сберегать элементы и сопоставлять элементы во времени.

Растяжение BugAid имеет еще несколько увлекательных вероятностей (скажем, для визуализации трудных выражений в операторе if).

так что я думаю, это растяжение заслуживает внимание разработчиков.

пару слов о недостатках, которые я нашел.

  • Это еще не релиз, а бета, так что не неизменно работает стабильно. Чем труднее конструкции данных, там возрастает вероятность любых задач.
  • Определенный типовой функционал (скажем аттрибут DebuggerTypeProxy) не поддержан растяжением.
  • Растяжение не даром, но есть двухмесячный безвозмездный период применения.

Кстати, сайт поддержки http://bugaidsoftware.userecho.com/ достаточно комфортен и уважает gamification, что в данном случае скорее отлично, чем нет.

Источник: programmingmaster.ru

 

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB