コード品質
コードの品質は、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>
Gradle
sonar.gradle
ファイルに次を追加できます。
test {
jacoco {
excludes += ['build/generated/**']
}
}
jacocoTestReport {
afterEvaluate {
classDirectories = files(classDirectories.files.collect {
fileTree(dir: it, exclude: [
'**/*_.class'
])
})
}
}
デフォルトで生成されたプロジェクトの自動分析
JHipsterジェネレータプロジェクトは、新しいコミットが"main"ブランチにマージされるたびに分析されるサンプルプロジェクトを公開しています。
JHipster組織の下のJHipsterサンプルアプリケーションの分析
これにより、JHipsterチームは、可能な限りクリーンなコードでプロジェクトの開発を開始できるようになります。
この分析は、SonarCloudによって無料で提供されています。