Отчётность IBM Rational ClearCase. Часть 3Источник: developerworks Рустам Зайдуллин, ведущий инженер, ТатАСУнефть" ОАО "Татнефть" Александр Новичков, руководитель отдела внедрения и консалтинга, СМ-Консалт
Далее таким же образом считываем введённое значение из файла. Затем по выбранному месяцу определяем число дней в месяце
После этого запрашиваем день отчётного периода. Если ранее были введены текущие год и месяц, ограничиваем список текущим днём.
Форма этого диалога выглядит следующим образом (рисунок 7). После считывания из файла введённого значения дня начала отчётного периода формируем строки даты. Одну из них создаём со словесным обозначением месяца (например, "april""), другую - с числовым (соответственно, "4"). Далее пригодятся оба варианта. Дата отчётного периода определена. Кроме того, мы хотим видеть изменения в разрезе по разработчикам, которые создали эти новые версии. Для этого необходимо передать скрипту с входными параметрами список разработчиков, по которым проводится анализ. Здесь мы не будем выводить дополнительные формы, а поступим проще и, на наш взгляд, эффективнее. Передачу списка персоналий проекта, по которым проводится анализ, выполняем, как и путь к анализируемому каталогу, из самого контекстного меню (рисунок 8). Рисунок 8. Контекстное меню ClearCase с внесёнными дополнениями Настройки пункта "Отчёт по группе интеграции" контекстного меню приведены на рисунке 9. По второму аргументу - "integr" - скрипт определит имя файла со списком персоналий. Рисунок 9. Настройка контекстного меню Сохраняем значение второго аргумента в переменную, и формируем путь к файлу, содержащему список персоналий. Файлы созданы заранее и размещены в каталогах с открытым доступом, там же, где и файл самого выполняемого скрипта. Считываем строки файла в массив.
Теперь вся информация для поиска версий подготовлена, и остаётся выполнить запрос, получить выборку нужных версий и рассчитать для них метрики. Для расчета метрик мы используем бесплатно распространяемую утилиту cccc.exe. Чтобы получить метрики по исходному коду, необходимо запустить утилиту с путём к файлу, содержащему исходный код. В нашем случае это будет путь к версии элемента версионного хранилища. Остаётся выполнить еще одно подготовительное действие. Так как результат мы хотим получить в таблицу MS Excel, нужно инициировать для этого новую книгу. Добавим библиотеки работы с OLE-объектами и с объектами MS-Excel в заголовок скрипта.
Ловим открытое приложение MS Excel, если таковое имеется, в противном случае создаём новое. Создаём новую книгу:
Запишем в файл заголовок - название отчёта, и шапку формируемой таблицы
Далее описана процедура, которая ищет по заданным критериям версии и рассчитывает для них метрики. Здесь мы должны сделать небольшое отступление, так как на этом этапе возникает вопрос обработки файлов формата XML. Скрипт, который мы пишем, будет выполняться встроенным в ClearCase языком Perl - ccperl. В поставку ccperl не включены распространённые библиотеки для обработки XML - XML::SAX и XML::Parser. Данные модули являются свободно распространяемыми, найти их можно на сайте CPAN. Там же находятся инструкции по установке дополнительных модулей, сведения о зависимых модулях и вся необходимая информация. Но при установке дополнительных модулей в ccperl возникают проблемы. Можно использовать обычный Perl, но в этом случае возникает необходимость установки его на все рабочие станции, на которых будет выполняться скрипт. Другой вариант - самостоятельно описать анализ XML-файла в скрипте, который, собственно, по своему содержанию является обычным текстовым файлом. В данном примере мы поступим именно таким образом. Для начала проанализируем файл с исходным кодом и посмотрим, что, собственно, выдаст нам утилита. Для этого выбираем файл, и выполняем строку cccc.exe <путь_к_файлу>. Для того чтобы не запускать используемую утилиту без указания полного пути к ней, мы прописали этот путь в переменную среды окружения PATH. Утилита формирует несколько файлов, но нас интересует файл с именем анализируемого файла и расширением XML. Нас интересуют также следующие метрики: число строк кода (LOC), метрика цикломатической сложности по Мак-Кейбу для всей программы (MVG) и метрика качества комментирования программы - отношение числа строк кода к числу строк комментариев (L_C). Ниже приведён фрагмент полученного XML-файла, упомянутые метрики выделены маркером.
Теперь мы можем описать правила для выборки значений метрик скриптом. Выше мы сформировали массив с именами разработчиков, работающих в версионном хранилище. Теперь выполняем поиск созданных каждым разработчиком версий, для каждой найденной версии выполняем расчет выбранных метрик. Далее описан цикл, обрабатывающий значения массива, вызов процедуры расчёта метрик и, естественно, сама процедура.
Мы записали в таблицу имя разработчика и выполняем поиск в выбранном каталоге версионного хранилища ClearCase версий, созданных данным специалистом в течение указанного срока. Поиск выполняется описанной ниже процедурой, она же анализирует полученный результат и записывает его в созданную книгу MS Excel.
Мы выполнили поиск, и перехватываем результат из консоли в переменную $line. Обрабатываем полученное значение:
Проверяем окончание строки. Мы не будем учитывать нулевые версии, так как они не содержат информации. Остальные версии подвергаются анализу.
В переменной $tmpname мы сформировали стандартное имя файла, т.е. завершающееся расширением. Используемая в примере утилита расчета метрик не может оперировать названиями файлов, содержащими полный путь ClearCase, т.е. названиями версий.
Мы выполнили операцию CheckOut для обрабатываемой версии, чтобы увидеть её в текущем представлении ClearCase, и вычисляем метрики. Операция CheckOut выполняется без резервирования версии - на тот случай, если в настоящее время кто-то работает с данным элементом. Результат сохраняется во временном файле c:\temp\cccc\tmp.xls
Содержимое файла считано в массив построчно. Далее, находим в нужных нам строках значения метрик (см. выше).
Значения метрик записаны в переменные, и нам остаётся только сохранить полученные результаты в таблицу. Записываем название версии (здесь - полное имя, включая номер версии) и вычисленные метрики.
Далее отменяем CheckOut, создаём на версии атрибуты, содержащие соответствующие значения метрик и добавляем приращение к переменной указателя строки таблицы.
Результат работы скрипта представлен в таблице 1. После завершения работы скрипта книга MS Excel остаётся открытой для дальнейшей работы. Можно настроить сохранение сформированной таблицы и рассылку по электронной почте - как угодно, в зависимости от потребностей. Таблица 1. Результат работы скрипта
|