コード品質 パーマリンク to " コード品質"

コードの品質は、SonarCloudを使用して分析でき、これはJHipsterによって自動的に設定されます。

JHipsterでのSonarの使用 パーマリンク to "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.host.url=http://localhost:9001

Sonarフェーズを再実行する必要がある場合は、少なくともinitializeフェーズを指定してください。これは、Sonarプロパティがsonar-project.propertiesファイルからロードされるためです。

./mvnw initialize sonar:sonar -Dsonar.host.url=http://localhost:9001

Gradleを使用している場合は、自動的に設定されています。

./gradlew -Pprod clean check jacocoTestReport sonarqube -Dsonar.host.url=http://localhost:9001

どの場合でも、sonar-scannerが既にインストールされている場合は、それを使って分析できます。

sonar-scanner

分析が完了すると、Sonarのダッシュボードで利用できるようになります。デフォルトではhttp://127.0.0.1:9001/です。

Jacoco解析からのファイルの除外 パーマリンク to "Jacoco解析からのファイルの除外"

カバレッジ分析から特定のクラス(生成されたクラスやアプリケーションクラスなど)を除外し、デフォルトのjacoco htmlレポートに正しい カバレッジを含める場合は、クラスを分析およびレポートから除外する必要があります。

Maven パーマリンク to "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 パーマリンク to "Gradle"

sonar.gradleファイルに次を追加できます。

test {
    jacoco {
        excludes += ['build/generated/**']
    }
}

jacocoTestReport {
    afterEvaluate {
        classDirectories = files(classDirectories.files.collect {
            fileTree(dir: it, exclude: [
                    '**/*_.class'
            ])
        })
    }
}

デフォルトで生成されたプロジェクトの自動分析 パーマリンク to "デフォルトで生成されたプロジェクトの自動分析"

JHipsterジェネレータプロジェクトは、新しいコミットが”main”ブランチにマージされるたびに分析されるサンプルプロジェクトを公開しています。

JHipster組織の下のJHipsterサンプルアプリケーションの分析

これにより、JHipsterチームは、可能な限りクリーンなコードでプロジェクトの開発を開始できるようになります。

この分析は、SonarCloudによって無料で提供されています。