1. 概要

SonarQubeは、コード品質とコードカバレッジを測定することにより、ソースコードの全体的な状態の概要を提供するオープンソースのスタンドアロンサービスです。

このチュートリアルでは、SonarQubeとJaCoCoを使用してコードカバレッジを測定するプロセスについて説明します。

2. 説明

2.1. コードカバレッジ

コードカバレッジは、テストカバレッジとも呼ばれ、テストで実行されたアプリケーションのコードの量の尺度です。 基本的に、これはテストおよび実行された本番コードのパーセンテージを表すため、多くのチームがテストの品質をチェックするために使用するメトリックです

これにより、開発チームは、プログラムがバグについて広くテストされており、比較的エラーがないはずであるという安心感を得ることができます。

2.2. SonarQubeとJaCoCo

SonarQube は、マイナーなスタイリングの詳細から重大な設計エラーまで、コードベースに影響を与えるすべてのものを検査および評価します。 これにより、開発者は、スタイリングエラー、潜在的なバグ、コードの欠陥から、設計の非効率性、コードの重複、テストカバレッジの欠如、過度の複雑さまで、コード分析データにアクセスして追跡できます。

また、メジャーベースのブール条件のセットである品質ゲートも定義します。 さらに、SonarQubeは、コードが本番環境に対応しているかどうかを知るのに役立ちます。

SonarQubeは、Java用の無料のコードカバレッジライブラリであるJaCoCoと統合して使用されます。

3. Maven構成

3.1. SonarQubeをダウンロード

SonarQubeは公式ウェブサイトからダウンロードできます。 SonarQubeを起動するには、Windowsマシンの場合は StartSonar.bat という名前のファイルを実行し、LinuxまたはmacOSの場合はファイルsonar.shを実行します。 このファイルは、抽出されたダウンロードのbinディレクトリにあります。

3.2. SonarQubeとJaCoCoのプロパティを設定する

まず、JaCoCoのバージョン、プラグイン名、レポートパス、およびソナー言語を定義する必要なプロパティを追加することから始めましょう。

<properties>
    <!-- JaCoCo Properties -->
    <jacoco.version>0.8.6</jacoco.version>
    <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
    <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
    <sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
    <sonar.language>java</sonar.language>
</properties>

property sonar.jacoco.reportPath は、JaCoCoレポートが生成される場所を指定します。

3.3. JaCoCoの依存関係とプラグイン

JaCoCo Mavenプラグインは、実行カバレッジデータを記録し、コードカバレッジレポートを作成するJaCoCoランタイムエージェントへのアクセスを提供します。

次に、pom.xmlファイルに追加する依存関係を見てみましょう。

<dependency>
    <groupId>org.jacoco</groupId> 
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.8.6</version>
</dependency>

次に、MavenプロジェクトをJaCoCoと統合するプラグインを構成しましょう。

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>${jacoco.version}</version>
    <executions>
        <execution>
            <id>jacoco-initialize</id>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
        </execution>
        <execution>
            <id>jacoco-site</id>
            <phase>package</phase>
            <goals>
                <goal>report</goal>
            </goals>
        </execution>
    </executions>
</plugin>

4. SonarQubeの動作

pom.xmlファイルで必要な依存関係とプラグインを定義したので、 mvn cleaninstallを実行してプロジェクトをビルドします。

次に、コマンドmvn sonar:sonar を実行する前にSonarQubeサーバーを起動します。このコマンドが正常に実行されると、プロジェクトのコードカバレッジのダッシュボードへのリンクが表示されます。報告:

 

また、プロジェクトのターゲットフォルダーにjacoco.execという名前のファイルが作成されることにも気付くでしょう。 このファイルは、SonarQubeによってさらに使用されるコードカバレッジの結果です。

また、SonarQubeポータルにダッシュボードを作成します。 このダッシュボードには、コードで検出されたすべての問題、セキュリティの脆弱性、保守性メトリック、およびコード重複ブロックを含むカバレッジレポートが表示されます。

 

5. 結論

SonarQubeとJaCoCoは、コードカバレッジの測定を容易にするために一緒に使用できる2つのツールです。 また、コードの重複、バグ、およびコード内の他の問題を見つけることにより、ソースコードの全体的な状態の概要を提供します。 これは、コードが本番環境に対応しているかどうかを知るのに役立ちます。

この記事の完全なソースコードは、GitHubから入手できます。