Статьи

Анализ тенденций с помощью Maven Dashboard

Непрерывная интеграция рассматривается как часть практики разработки Agile. Его хвалят за то, что он не дает разработчикам «сломать сборку». Этот совет расскажет, как реализовать отчеты о тенденциях в ежедневных сборках с помощью подключаемого модуля Maven и панели инструментов Maven. Непрерывная интеграция или CI, которые должны рассматриваться вне рамок постоянной компиляции проверенного кода. Это один из многих шагов, который должен стать частью процесса проверки кода.

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

В идеальном мире разработки программного обеспечения эти отчеты будут ежедневно проверяться как часть процесса проверки кода. По правде говоря, это не всегда происходит. Инженеры-программисты и их лидеры — люди с нехваткой времени. Примите участие в следующем курсе по управлению временем. Следующее лучшее решение — это, по крайней мере, определить тенденции развития кода. Maven приборная панель обеспечивает исторические тенденции.

Подключаемый модуль панели инструментов Maven может сохранять статистику отчетов в базе данных и генерировать отчеты о сайтах с тенденциями предыдущих ежедневных и еженедельных сборок. Поскольку отчеты занимают время, лучше всего, чтобы они запускались один раз в день в непиковые часы разработки. Это связано с тем, что они занимают дополнительные циклы в процессе непрерывной сборки, что может привести к проблемам со временем доставки. Как минимум, построения отчетов должны выполняться по ночам, чтобы получить преимущества. Существует ряд шагов, которые необходимо выполнить, чтобы показать тенденции на сгенерированном сайте.

Для целей этого примера предполагается установка последней версии Maven 2.0 и JDK 1.4 или более поздней. Последнее требование — постоянное хранение. MySql будет хорошей базой для хранения истории приложений. Базовое понимание структуры проекта Maven 2.0 также необходимо. Если придерживаться простой идеи, это демонстрирует только одну настройку проекта. Листинг 1. Базовый проект Maven. В демонстрационных целях в проект будет включена зависимость TestNG.

Листинг 1. Проект Pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.softlanding.dashboard</groupId>
<artifactId>example-dashboard</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>Example dashboard with maven</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>5.1</version>
<classifier>jdk15</classifier>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<defaultGoal>install</defaultGoal>
<finalName>sampleprj</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
<wtpversion>1.0</wtpversion>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>dashboard-maven-plugin</artifactId>
<configuration>
<dialect>org.hibernate.dialect.MySQLInnoDBDialect</dialect>
<driverClass>com.mysql.jdbc.Driver</driverClass>
<connectionUrl>jdbc:mysql://localhost:3306/continuum?autoReconnect=true</connectionUrl>
<username>root</username>
<password>sn@pple</password>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.3</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<reportSets>
<reportSet>
<reports>
<report>project-team</report>
<report>mailing-list</report>
<report>cim</report>
<report>issue-tracking</report>
<report>license</report>
<report>scm</report>
</reports>
</reportSet>
</reportSets>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<configuration>
<targetJdk>${compilerTarget}</targetJdk>
<sourceEncoding>${fileEncoding}</sourceEncoding>
<excludes>
<exclude>${vm.report.exclusions}</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<configuration>
<xmlOutput>true</xmlOutput>
<effort>Max</effort>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jdepend-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>dashboard-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
</plugin>
</plugins>
</reporting>
</project>

 

 

У
dashboard-maven-plugin
есть параметры конфигурации, указывающие на соединения для базы данных Mysql. Если в базе данных еще нет таблиц, будет создан проект. Кроме того, у каждого проекта есть свой уникальный идентификатор, поэтому нет необходимости в нескольких схемах баз данных для x числа проектов, которые могут быть в организации.

Предположим, у вас есть простое приложение и тест, готовый к компиляции, для генерации исторических тенденций необходимо три цели. Первый работает mvn clean install site. Это компилирует и генерирует сайт проекта Maven. Второй шаг — запуск панели инструментов mvn: сохраняться . Эта цель будет принимать результаты отчетов и сохранять их в базе данных. Третья цель — запустить mvn dasboard: dashboard . Это повторно генерирует отчеты и объединяет историческую информацию из каждого отчета.

При настройке среды интеграции в связи с жизненным циклом инструментальной панели maven необходимо выполнить каждую из этих целей, чтобы сохранить и сгенерировать хронологический отчет. Исторический отчет о результатах будет находиться в каталоге target / site / проекта maven, который называется «dashboard-report-исторические.html». Он будет отображать ежедневные и еженедельные тренды для каждого отчета, указанного в проекте, для создания. Существуют дополнительные настройки конфигурации, которые можно выполнить в отчете панели мониторинга.

Разработка новых приложений может значительно выиграть от использования Maven в качестве сборки. Это не идеальный инструмент, но он идет в правильном направлении для управления программными проектами. Поскольку разработчики стремятся не только создавать лучший код, они не должны допускать долгосрочной разработки, а рефакторинг позволяет коду начать выглядеть как следующий участник Большого проигравшего.