Trofimov_moi / Трофимов / Laba5
.docxМинистерство образования, науки, молодежи и спорта Украины
Одесский национальный политехнический университет
Институт компьютерных систем
Кафедра информационных систем
Лабораторная работа № 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 обнаружил критические ошибки.