Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
14
Добавлен:
10.02.2016
Размер:
235.48 Кб
Скачать

Министерство образования, науки, молодежи и спорта Украины

Одесский национальный политехнический университет

Институт компьютерных систем

Кафедра информационных систем

Лабораторная работа № 5

По дисциплине: «Качество и надёжность»

На тему: «Continuous Integration средства на примере TeamCity»

Выполнил:

ст. гр. АИ-091

Подкошин А.С.

Проверил:

Трофимов Б.Ф.

Одесса, 2013

Цель работы:

Необходимо установить сервер TeamCity (Community Edition).

"Залить" проекты лабораторных работ 1-3 на Github, каждая в своем проекте.

Далее создать проект в котором создать три конфигурации (по одной на проекты лабораторных работ 1-3 ).

Каждая конфигурация должна наблюдать на соответсвующим проектом из Github, в случае появления изменений, она должна запускать следующее:

* компиляция проекта (c помощью maven) и запуск тестов. В случае ошибок завершить с ошибкой.

* оценка покрытия кода тестами (использование например Cobertura Maven Plugin)

* запуск анализа метрик на примере max lines per method. Если значение вышло за пределы 100 строк то завершить с ошибкой. Это может быть достигнуто настройкой Maven плагина http://maven.apache.org/plugins/maven-checkstyle-plugin/

* запуск статического анализатора кода FindBugs. В случае появления критических ошибок завершить с ошибкой. Это может быть достигнуто настройкой соответствующего Maven плагина.

Ход работы

1. Установил сервер TeamCity(Community Edition).

2. Залил на GitHub проекты лабораторных работ 1 – 3.

3. Создал проект в TeamCity, включающий три конфигурации (по одной на проекты лабораторных работ 1-3 ).

4. Предусмотрел завершение сборки конфигураций с ошибкой при условии если максимальное число строк в методе превышает 100 строк. Для этого использовал соответствующие настройки в POM файле для плагина CheckStyle.

5. Предусмотрел завершение сборки при условии если FindBugs выявил критические ошибки, также прописав в POM файле соответствующие настройки для плагина FindBugs.

6. Добавил зависимости для плагина Cobertura чтобы отследить процент покрытия кода тестами

Рисунок 1 – Конфигурации проекта к лабораторной работе.

Рисунок 2 – Шаги сборки каждой конфигурации.

Рисунок 3 – Триггер сборки для отслеживания изменений в репозитории проекта GitHub.

Конфигурация плагина CheckStyle в POM файле

<build>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-checkstyle-plugin</artifactId>

<version>2.10</version>

<configuration>

<configLocation>src\main\resources\checkstyle.xml</configLocation>

<consoleOutput>true</consoleOutput>

<logViolationsToConsole>true</logViolationsToConsole>

<failsOnError>true</failsOnError>

</configuration>

</plugin>

. . . .

</plugins>

</build>>

Файл конфигурации для CheckStyle для учёта максимального числа строк на метод (max lines per method).

<?xml version="1.0" ?>

<!DOCTYPE module PUBLIC

"-//Puppy Crawl//DTD Check Configuration 1.2//EN"

"http://www.puppycrawl.com/dtds/configuration_1_2.dtd">

<module name="Checker">

<module name="JavadocPackage">

<property name="severity" value="warning"/>

</module>

<module name="TreeWalker">

<module name="MethodLength">

<property name="tokens" value="METHOD_DEF"/>

<property name="max" value="100"/>

<property name="countEmpty" value="false"/>

</module>

</module>

</module>

Конфигурация плагина Cobertura в POM файле

<reporting>

<plugins>

<plugin>

<groupId>org.codehaus.mojo</groupId>

<artifactId>cobertura-maven-plugin</artifactId>

<configuration>

<formats>

<format>html</format>

<format>xml</format>

</formats>

</configuration>

</plugin>

. . . . .

</plugins>

</reporting>

Конфигурация плагина FindBugs в POM файле

<reporting>

<plugins>

<plugin>

<groupId>org.codehaus.mojo</groupId>

<artifactId>findbugs-maven-plugin</artifactId>

<version>2.5.3-SNAPSHOT</version>

<groupId>org.codehaus.mojo</groupId>

<artifactId>findbugs-maven-plugin</artifactId>

<configuration>

<xmlOutput>true</xmlOutput>

<!-- Optional directory to put findbugs xdoc xml report -->

<xmlOutputDirectory>target/site</xmlOutputDirectory>

<threshold>High</threshold>

<failOnError>true</failOnError>

</configuration>

</plugin>

. . . . .

</plugins>

</reporting>

Рисунок 4 – Отчёт плагина CheckStyle для проекта high-scale-lib, взятого из GitHub.

Рисунок 5 – Отчёт плагина Cobertura для проекта high-scale-lib, взятого из GitHub.

Для проверки работы условия с максимальным числом строк кода я изменил в файле checkstyle.xml значение max со 100 на 10 для того чтобы убедится что build действительно выполнится с ошибкой.

Рисунок 6 – Проверка провала сборки проекта, если макс. число строк в методе превышает заданное значение.

Выводы: В ходе выполнения данной лабораторной работы я настроил Continuous Integration для трёх проектов на GitHub при помощи сервера TeamCity. Предусмотрел завершение сборки проектов с ошибкой при условии если максимальное число строк в методе превышает 100 строк или если FindBugs обнаружил критические ошибки.

Соседние файлы в папке Трофимов