C#: Code review (Просмотр кода) c помощью Review Assistant

Code review или проверка (инспекция) кода — процесс проверки исходного кода программы с целью обнаружения и исправления ошибок, оставленных незамеченными на этапе разработки ПО. Помимо всего этого данный процесс позволяет разработчикам обмениваться опытом, обучать новичков, искать недочеты в структуре приложения и много другое. О том как можно проводить данный процесс для языка программирования C# я расскажу в данной статье.
Недавно в Интернете мною было обнаружено дополнение для среды разработки Visual Studio под названием Review Assistant, которое как раз и предназначено для проведения описанного в начале поста процесса.
Примечение: данный плагин работает начиная с версии VS2010 и не подджерживает сборки Express. Поэтому рекомендую пользоваться Visual Studio 2013 Community. Данная версия студии является бесплатной для частных разработчиков и фирм с числом ПК < 250 и годовым оборотом менее 1 млн. долларов. (5 копий продукта)

Сам по себе плагин Review Assistant, к сожалению, является платным, однако есть бесплатная лицензия для команды не более чем из трех разработчиков и вполне приемлиемый прайс для команды из пяти человек. Так же на официальном сайте было найдено видео превью возможностей данного плагина (для тех кто хочет быстро понять зачем нужно данное дополнение).

Что же из себя представляет Review Assistant? Откроем какой-нибудь тестовый проект и разберемся… ведь нет ничего приятней чем разбираться во чем-то новом =)

Этап 1: Настройка.
Запускаем свежеустановленный Review Assistant. Мы сразу видим demo проект, который разработчики оставили нам для изучения основных принципов работы программы. Если хотите можете потыкаться там. А потом перейти в настройки плагина.
Давайте удалим всех пользователей кроме Администратора, добавим стажера (у меня это Ivanov Ivan) и себя (у меня Mamatov Andrey).

Панель управления пользователями

Этап 2: Действие.
Допустим наш стажер написал вот такую программу:

namespace TestConsoleApplication
{
    class FileWorker
    {
        System.IO.StreamWriter sw = null;

        public FileWorker(string filePath)
        {
            this.sw = new System.IO.StreamWriter(filePath);
        }

        public void WriteLine(string line)
        {
            this.sw.WriteLine(line);
        }

        public void Close()
        {
            if (sw != null)
            {
                sw.Close();
            }
        }
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Какой файл откроем?");
            FileWorker fw = new FileWorker(Console.ReadLine());
            Console.WriteLine("Что пишем?");
            fw.WriteLine(Console.ReadLine());
            fw.Close();
        }
    }
}

А Вы, как человек знающий толк в написании кода, решили проверить как обстоят дела у Вашего ученика. Открываем проект ученика, приходим в ужас и начинаем инспекцию. Нажимем «Tools» -> «Review Assistant» -> «Options». На вкладке «Connection» вводим логин и пароль от своего пользователя. (Если Вы подключены как Администратор, нужно нажать кнопку Disconnect). Если Вы успешно соеденились с локальным сервером плагина, количество вкладок увеличится и кнопка Disconnect снова станет активной.
Далее переходим во вкладку Project и создаем новый проект и выставляем нужные параметры.

Создаем репозитори
Примечание: Working directory — путь к Вашему проекту

На этом настройка завершена. Открываем код программы, а далее нажимаем «Tools» -> «Review Assistant» -> «Code review board». Мы увидим что справа появится рабочая панель, в которой нам предлагают выбрать репозиторий и, если репозиторий пуст, создать ревью. Именно это мы и делаем.

Создаем ревью

Теперь переходим к исходному коду файла Program.cs и начинаем инспектировать. На нужной строчке нажимаем правой кнопкой мыши и выбираем пункт «Add review comment». В появившемся поле пишем наш комментарий. Если нужно мы можем пометить комментарий флагом ошибки (Defect). Также комментарий можно оставить не к строке а к нужному участку кода, для этого его необходимо предварительно выделить.

Добавление комментария

Таким образом мы проверяем весь код.

Когда наш студент откроет проект он увидит такую картину:
VS
Согласитесь, приятно когда о тебе заботятся =)
После этого студент начинает исправлять свои ошибки, параллельно записывая в свою тетрадку то, чего он не знал. Если нужно он может оставить свой комментарий.
Ответ на комментарий

Если в это время у проверяющего открыта Visual Studio он будет видеть сообщения о том, что студент проводит какую-то работу. Если же студия закрыта, это сообщение он увидит во время следующего запуска программы. Настало время проверить последние изменения, открыть проблемные места заного, а так же просто вести дружескую переписку =) Ну а после всех циклов мы можем либо принять наше Review либо отклонить его.

Комменты

Подведя итог тестирования и использования дополнения Review Assistant для Visual Studio в первую очередь хочется подчеркнуть тот факт, что разработчики постарались сделать интерфейс программы интуитивно понятным и им это удалось. Установка плагина происходит автоматически без лишних телодвижений. Настроек в программе не очень много, что так же не плохо. Я остался доволен, программа реально полезная и очень проста в использовании.

Недостатки, которые я бы отметил для себя:
1) Установщик не выдает ошибок если на Вашем ПК установлены только Express версии студии. Таким образом некоторые пользователи лишь будут разводить руками, поняв что плагин так и не появился в их Visual Studio.
2) Было бы не плохо при открытом проекте и при создании нового проекта review автоматически заполнять поле working directory.
3) Самым затруднительным для понимая стал момент добавления списка файлов для инспекции (Add revisions), не сразу становится понятно зачем эта кнопка нужна. Лично мое первое впечатление было что это некий импорт ревизий. Более того, если начать оставлять комментарии в файле, который не добавлен в ревизию, мы видим сообщение которое говорит о том что файл не добавлен в список проверки, но дает возможность оставить комментарий. Мне, как ревизору было бы полезней, если бы так же была возможность добавить данный файл в общий список файлов инспекции.
4) Я так и не понял как работает и работает ли вообще email информирование.
5) Не понятно почему автор может закрыть комментарий без пометки Defect. Как по мне лучше, иметь статус «Answered», который автоматически выставлялся бы при ответе. Ведь любой комментарий после уточнения автора может стать для менеджера проекта ошибкой.
6) Я не знаю поддерживает ли плагин русский язык и другие (опции смены языка в настройках обнаружено не было. вполне возможно язык берется системный — проверять я не стал). Но если нет, разработчикам стоит подумать о добавлении мультиязычности, но в целом это не критично, так как большая часть разработчиков пользуются английской версией VS.

Запись опубликована в рубрике Обзоры с метками , , , , , , , , . Добавьте в закладки постоянную ссылку.