コード品質
コードの品質は、SonarCloudを使用して分析でき、これはJHipsterによって自動的に設定されます。
JHipsterでのSonarの使用
JHipsterは、Sonar用の特定のDocker Compose設定(ここにJHipster Docker Composeドキュメントがあります)を提供し、すぐに利用できるSonarインスタンスを提供します。プロジェクトのルートで、次のコマンドを実行してください。
docker-compose -f src/main/docker/sonar.yml up -d
Mavenを使用する場合は、自動的に設定されています。
./mvnw -Pprod clean verify sonar:sonar -Dsonar.login=admin -Dsonar.password=admin
Sonarフェーズを再実行する必要がある場合は、少なくともinitialize
フェーズを指定してください。これは、Sonarプロパティがsonar-project.propertiesファイルからロードされるためです。
./mvnw initialize sonar:sonar -Dsonar.login=admin -Dsonar.password=admin
Gradleを使用している場合は、自動的に設定されています。
./gradlew -Pprod clean check jacocoTestReport sonarqube -Dsonar.login=admin -Dsonar.password=admin
また、sonar-scannerが既にインストールされている場合は、それを使って分析できます。
sonar-scanner
分析が完了すると、Sonarのダッシュボードで利用できるようになります。デフォルトではhttp://127.0.0.1:9001/です。
Jacoco解析からのファイルの除外
カバレッジ分析から特定のクラス(生成されたクラスやアプリケーションクラスなど)を除外し、デフォルトのjacoco htmlレポートに正しい カバレッジを含める場合は、クラスを分析およびレポートから除外する必要があります。
Maven
ユニットテストと統合テストの両方のprepare-agent
およびreport
ゴールに除外を追加する必要があります。
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco-maven-plugin.version}</version>
<executions>
<execution>
<id>pre-unit-tests</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<!-- Applicationという名前のクラスを計測から除外 -->
<excludes>**/Application.*</excludes>
<destFile>${jacoco.utReportFile}</destFile>
</configuration>
</execution>
<execution>
<id>post-unit-test</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<!-- Applicationという名前のクラスをレポートから除外 -->
<excludes>**/Application.*</excludes>
<dataFile>${jacoco.utReportFile}</dataFile>
<outputDirectory>${jacoco.reportFolder}</outputDirectory>
</configuration>
</execution>
<execution>
<id>pre-integration-tests</id>
<goals>
<goal>prepare-agent-integration</goal>
</goals>
<configuration>
<!-- Applicationという名前のクラスを計測から除外 -->
<excludes>**/Application.*</excludes>
<destFile>${jacoco.itReportFile}</destFile>
</configuration>
</execution>
<execution>
<id>post-integration-tests</id>
<phase>post-integration-test</phase>
<goals>
<goal>report-integration</goal>
</goals>
<configuration>
<!-- Applicationという名前のクラスをレポートから除外 -->
<excludes>**/Application.*</excludes>
<dataFile>${jacoco.itReportFile}</dataFile>
<outputDirectory>${jacoco.reportFolder}</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>