|
|
|||||||||||||||||||||||||||||
|
Анализ изменений в исходном коде средствами Borland StarTeamВ современной разработке программного обеспечения часто встречается ситуация, когда необходимо сравнить несколько версий одного и того же файла исходного кода. Например, ведущий разработчик может не разрабатывать программный код, а лишь анализировать результаты работы подчиненных ему разработчиков. Другой пример, когда разработчик не может выявить ситуацию, при которой в разрабатываемой программе возникает ошибка - для этого ему нужно проанализировать изменения в коде, которые он сделал за определенный период времени. И, наконец, пример, когда участнику проекта необходимо найти версию программного кода, в которой были внесены определенные изменения. Команды разработчиков, использующие в своей работе систему управления конфигурациями Borland StarTeam, имеют отличный инструментарий для выполнения описанных выше задач. Первая возможность, которую мы можем использовать при анализе изменений в коде - это просмотр комментариев к зафиксированным версиям. При каждом фиксировании версии (Check in…) пользователь должен вводить текст, описывающий выкладываемые изменения, например, "оптимизирован алгоритм сортировки, скорость увеличена в три раза" или "выполнен рефакторинг кода, удалены неиспользуемые переменные". Данные комментарии можно увидеть на вкладке History на нижней панели в клиенте StarTeam (рис.1). Рис.1. Комментарии к изменениям в файлах в клиенте StarTeam. Также на данной вкладке присутствуют поля "Revision" (порядковый номер ревизии файла), "Modified By" (кто зафиксировал данную ревизию файла), "Modified Time" (время фиксирования версии). Помимо перечисленных полей, можно настроить вывод других полей (рис.2), которые по умолчанию скрыты. Рис.2. Окно настройки отображения полей на вкладке History. Таким образом, выбрав нужные поля, можно уже на стадии просмотра списка ревизий выбранного файла получать некоторую информацию о внесенных изменениях. Предположим, что в результате просмотра истории изменений файла, была найдена та ревизия файла, изменения в которой необходимо проанализировать. Здесь существует две возможности: сравнить выбранную ревизию файла с текущей ревизией (локальной), и сравнить выбранную ревизию с любой другой ревизией этого же файла. Для того чтобы сравнить выбранную ревизию с локальной, нажимаем правой кнопкой мыши по выбранной ревизии на вкладке History и в контекстном меню выбираем пункт "Compare Contents". В результате отобразиться окно "File Compare/Merge" (рис.3), в котором цветом отмечены различия в содержимом разных ревизий выбранного файла. Рис.3. Различия в ревизиях файлов в окне "File Compare/Merge" В левой части окна расположена выбранная ревизия, в правой части - текущая ревизия файла (локальная). Зеленым цветом выделены строки, которых не существует в сравниваемой ревизии, желтым - те, которые были изменены. Интересная особенность заключается в том, что при наведении указатель мыши на выделенную область, на ней появиться кнопка со стрелкой, при нажатии на которую выделенный фрагмент кода будет перемещен на соседнюю ревизию. Это позволяет не только пассивно сравнивать изменения в коде, но и переносить фрагменты кода из старых ревизий в текущую ревизию. В правой нижней части экрана, под линейкой прокрутки, расположены две пары кнопок с двойными стрелками, направленными вверх и вниз. Они служат для быстрого перехода к следующему или предыдущему выделенному блоку. Особенно это полезно при работе с файлами большого объема, в которых реализованы лишь небольшие изменения, разбросанные по всему файлу. Теперь рассмотрим, как сравнивать содержимое двух произвольных ревизий файла. Это очень просто - нужно на вкладке History выбрать две ревизии удерживая кнопку Ctrl, после чего в контекстном меню выбрать пункт "Compare Contents". В результате отобразиться окно, которое уже было представлено на рис.3, но с соответствующими изменениями в ревизиях. Данной возможностью очень удобно пользоваться при анализе изменений в недавно зафиксированных файлах. Например, в клиенте StarTeam нужно выбрать нужную папку (или весь проект), после чего все файлы, которые являются "устаревшими" на локальной машине по отношению к файлам на сервере StarTeam, будут отмечены статусом "Out of Date". Затем в контекстном меню на нужных файлах необходимо выбрать пункт "Compare Contents", после чего откроется уже знакомое нам окно "File Compare/Merge", где будут представлена локальная ревизия файла, и та ревизия, которая зафиксирована на сервере StarTeam. Тем самым StarTeam предоставляет нам удобную возможность для анализа изменений в старых ревизиях файлов, а также для сравнения текущей ревизии с предыдущими ревизиями, и с теми, которые еще не были получены с сервера StarTeam на локальный компьютер. Однако многим пользователям функционал утилиты сравнения может показаться ограниченным, недостаточным для решения каких-либо задач. Для этого в клиенте StarTeam существует возможность подключения сторонних утилит для сравнения и слияния ревизий файлов, а также просто для их просмотра. Для того, чтобы настроить внешние утилиты необходимо пункт меню Tools - Personal Options… в открывшемся окне переключиться на вкладку "File" и в нижней части окна нажать кнопку "Alternate Applications…", после чего откроется окно "Alternate Application" (сторонние приложения). Рис.4. Окно настройки сторонних приложений. Давайте рассмотрим пример подключения стороннего приложения для сравнения ревизий двух файлов. В качестве стороннего приложения выберем утилиту Araxis Merge. Данная утилита является одной из самых популярных программ для сравнения файлов различных форматов. В отличие от рассмотренной нами стандартной утилиты, Araxis умеет сравнивать и показывать различия не только в текстовых файлах, но и бинарных файлах, и даже в файлах изображений. Для того чтобы подключить Araxis к StarTeam мы должны в окне "Alternate Application" прописать путь к исполняемому файлу Compare.exe и указать перечень параметров. В качестве параметров мы передаем два файла, которые Araxis и будет сравнивать. В StarTeam для обозначения этих файлов предназначены предопределенные ключевые слова $file1 и $file2 (рис.5). Рис.5. Настроенные параметры для утилиты сравнения ревизий. Теперь, когда параметры настроены, можно проверить результат использования Araxis для сравнения ревизий файлов. Можно выбрать те же ревизии, которые мы выбирали в предыдущих примерах и также в контекстном меню выбрать пункт "Compare Contents". В результате отобразится уже не окно "File Compare/Merge", а окно Araxis Merge (рис.6). Для наглядности на данном рисунке представлен тот же фрагмент кода, что и на рис.3. Рис.6. Различия в ревизиях файлов в утилите Araxis Merge Как видите, принцип отображения различий в коде похожий, но есть и особенности. Однако это уже выходит за рамки данной статьи, более подробную информацию об утилите Araxis можно получить с официального сайта или из справочной системы. Таким образом, в данной статье мы рассмотрели возможности, которые дает StarTeam для анализа изменений в исходных кодах. В случае если пользователю не хватает стандартного инструментария StarTeam - имеется возможность подключить сторонние специализированные утилиты, тем самым расширив возможности анализа изменений в файлах исходного кода.
|
|