メインコンテンツまでスキップ

コード品質

コードの品質は、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によって無料で提供されています。