1
您現在的位置:
首頁
/
/
sonarqube測試覆蓋率--Java

sonarqube測試覆蓋率--Java

  • 分類:新聞資訊
  • 作者:蘇州華克斯信息科技有限公司
  • 來源:蘇州華克斯信息科技有限公司
  • 發(fā)布時(shí)間:2022-11-07
  • 訪問量:0

【概要描述】

sonarqube測試覆蓋率--Java

【概要描述】

  • 分類:新聞資訊
  • 作者:蘇州華克斯信息科技有限公司
  • 來源:蘇州華克斯信息科技有限公司
  • 發(fā)布時(shí)間:2022-11-07
  • 訪問量:0
詳情

SonarQube測試覆蓋率報告和測試執行報告是評估代碼質量的重要指标。測試覆蓋率報告告訴您測試用例涵蓋的代碼百分比。測試執行報告告訴您已運行哪些測試及其結果。

SonarQube本身不計算覆蓋範圍。要在分析中包含覆蓋率結果,您必須設置第三方覆蓋率工具并將(jiāng) SonarQube 配置爲導入該工具生成(chéng)的結果。

一般準則

在導入測試覆蓋率之前,您需要配置适當的 SonarScanner,以便在構建管道(dào)中執行代碼分析。

要啓用覆蓋率報告,您必須執行以下操作:

  1. 將(jiāng)覆蓋率工具設置爲作爲生成(chéng)管道(dào)的一部分運行。您的覆蓋率工具應設置爲在SonarScanner分析之前運行。
  2. 配置覆蓋範圍工具,使輸出報告文件的位置和格式與 SonarScanner 的預期相匹配。
  3. 配置聲納掃描儀的分析參數,以便它可以導入報告文件。

現在,在項目的每次構建中,覆蓋率工具都(dōu)應執行其分析并將(jiāng)其結果輸出到一個或多個文件(通常一個用于測試覆蓋率,一個用于測試執行)。然後(hòu),作爲其分析過(guò)程的一部分,SonarScanner將(jiāng)導入這(zhè)些文件并將(jiāng)結果發(fā)送到SonarQube。

覆蓋範圍支持

SonarQube 直接支持以各種(zhǒng)語言的各種(zhǒng)工具原生格式導入覆蓋數據。它還(hái)支持導入通用格式,該格式可用作從不直接支持的工具自定義轉換報表的目标。

Java 測試覆蓋率

SonarQube支持將(jiāng)測試覆蓋率報告作爲Java項目分析的一部分。

但是,SonarQube 不會(huì)自行生成(chéng)覆蓋率報告。相反,您必須設置第三方工具以在生成(chéng)過(guò)程中生成(chéng)報表。然後(hòu),您需要配置分析以告知 SonarScanner 報告的位置,以便它可以拾取報告并將(jiāng)其發(fā)送到 SonarQube,在那裡(lǐ)它將(jiāng)與其他分析指标一起(qǐ)顯示在您的項目儀表闆上。

對(duì)于Java項目,SonarQube直接支持JaCoCo覆蓋工具(有關集成(chéng)其他覆蓋工具的信息,請參閱通用測試數據)。

調整您的設置

要啓用覆蓋範圍,您需要:

  • 調整構建過(guò)程,以便 JaCoCo 報告生成(chéng)步驟在 SonarScanner 步驟之前運行。
  • 确保 JacCoCo 將(jiāng)其報告文件寫入生成(chéng)環境中定義的路徑。
  • 配置構建的掃描步驟,以便 SonarScanner 從該定義的路徑中選取報告文件。

在單模塊 Maven 項目中添加覆蓋範圍

要爲您的 Maven 項目添加覆蓋率,您需要使用 jacoco-maven-plugin 及其創建代碼覆蓋率報告的目标。report通常,您將(jiāng)創建一個特定的 Maven 配置文件,用于使用檢測執行單元測試,并僅按需生成(chéng)覆蓋率報告。

在最基本的情況下,我們需要執行兩(liǎng)個目标:允許在單元測試執行期間收集覆蓋率信息,以及 ,使用在單元測試執行期間收集的數據生成(chéng)報告。默認情況下,該工具會(huì)生成(chéng)報表的 XML、HTML 和 CSV 版本。在這(zhè)裡(lǐ),我們顯式指定XML,因爲這(zhè)是我們SonarQube唯一需要的XML。您的部分應如下所示:jacoco:prepare-agentjacoco:report<profile>pom.xml

<profile>

  <id>coverage</id>

  <build>

   <plugins>

    <plugin>

      <groupId>org.jacoco</groupId>

     <artifactId>jacoco-maven-plugin</artifactId>

      <version>0.8.7</version>

      <executions>

        <execution>

          <id>prepare-agent</id>

          <goals>

            <goal>prepare-agent</goal>

          </goals>

        </execution>

        <execution>

          <id>report</id>

          <goals>

            <goal>report</goal>

          </goals>

          <configuration>

            <formats>

              <format>XML</format>

            </formats>

          </configuration>

        </execution>

      </executions>

    </plugin>

    ...

   </plugins>

  </build>

</profile>

默認情況下,生成(chéng)的報告將(jiāng)保存在 下。掃描程序將(jiāng)自動檢查此位置,因此無需進(jìn)一步配置。隻需啓動:target/site/jacoco/jacoco.xml

mvn sonar:sonar -Pcoverage

像往常一樣,報告將(jiāng)被拾取。

如果需要更改生成(chéng)報告的目錄,可以使用 Maven 的開(kāi)關在命令行上設置屬性:-D

mvn -Dsonar.coverage.jacoco.xmlReportPaths=

      ../app-it/target/site/jacoco-aggregate/jacoco.xml

    sonar:sonar -Pcoverage

或在您的 pom.xml

<properties>

  <sonar.coverage.jacoco.xmlReportPaths>

    ../app-it/target/site/jacoco-aggregate/jacoco.xml

  </sonar.coverage.jacoco.xmlReportPaths>

</properties>

支持通配符和逗号分隔的路徑列表。路徑可以是絕對(duì)路徑,也可以是相對(duì)于項目根目錄的路徑。

在多模塊 Maven 項目中添加覆蓋範圍

對(duì)于多模塊 Maven 項目,您可以在父 pom 的配置文件中配置 ,就(jiù)像在上面(miàn)的單模塊案例中一樣。默認情況下,將(jiāng)爲每個模塊生成(chéng)單獨的覆蓋範圍報告。jacoco-maven-plugin

如果要將(jiāng)所有特定于模塊的報告聚合到一個項目級報告中,最簡單的解決方案是創建一個特殊的Maven模塊(以及您已有的模塊),該模塊除了使用該目标的模塊外,什麼(me)都(dōu)不包含。下面(miàn)是一個示例:pom.xmlreport-aggregate

<project>

  <artifactId>my-project-report-aggregate</artifactId>

  <name>My Project</name>

  <description>Aggregate Coverage Report</description>

  <dependencies>

    <dependency>

      <groupId>${project.groupId}</groupId>

      <artifactId>my-module-1</artifactId>

      <version>${project.version}</version>

    </dependency>

    <dependency>

      <groupId>${project.groupId}</groupId>

      <artifactId>my-module-2</artifactId>

      <version>${project.version}</version>

    </dependency>

  </dependencies>

  <build>

    <plugins>

      <plugin>

        <groupId>org.jacoco</groupId>

        <artifactId>jacoco-maven-plugin</artifactId>

        <executions>

          <execution>

            <id>report-aggregate</id>

            <phase>verify</phase>

            <goals>

              <goal>report-aggregate</goal>

            </goals>

          </execution>

        </executions>

      </plugin>

    </plugins>

  </build>

</project>

在目錄中調用時(shí),將(jiāng)生成(chéng)聚合報告并將(jiāng)其放置在該目錄中的标準位置。然後(hòu),在頂層設置到此位置:maven clean verifyreport-aggregate-moduletarget/site/jacoco-aggregate/jacoco.xmlpom.xmlsonar.coverage.jacoco.xmlReportPaths

<properties>/

  <sonar.coverage.jacoco.xmlReportPaths>

    ${project.basedir}/report-aggregate/target/site/

      jacoco-aggregate/jacoco.xml

  </sonar.coverage.jacoco.xmlReportPaths>

</properties>

支持通配符和逗号分隔的路徑列表。

Gradle 項目中添加覆蓋範圍

要爲您的 Gradle 文件設置代碼覆蓋率,您隻需將(jiāng) JaCoCo 插件和 SonarScanner for Gradle 一起(qǐ)應用于您的項目文件,因爲 JaCoCo 已經(jīng)集成(chéng)到默認的 gradle 發(fā)行版中:build.gradle

plugins {

    id "jacoco"

    id "org.sonarqube" version "3.3"

}

jacocoTestReport {

    reports {

        xml.enabled true

    }

}

您的報告將(jiāng)自動保存在目錄中。SonarQube 插件會(huì)自動檢測此位置,因此無需進(jìn)一步配置。要導入覆蓋範圍,請啓動:build/reports/jacoco

  gradle test jacocoTestReport sonarqube

覆蓋範圍參數也可以在UI中設置

該參數也可以在SonarQube界面(miàn)中設置,在sonar.coverage.jacoco.xmlReportPaths

您的項目> JaCoCo>“常規設置”>項目設置

對(duì)于項目級設置,以及

管理>配置>常規設置>JaCoCo

對(duì)于全局設置(應用于所有項目)。

 

關于蘇州華克斯信息科技有限公司

聯系方式:400-028-4008

      0512-62382981

專業的測試及安全産品服務提供商

Fortify | Webinspect | AppScan | SonarQube 

LoadRunner | UFT(QTP) | ALM(QC)

Micro Focus (原HPE)鉑金合作夥伴

SonarQube中國(guó)總代理

HCL中國(guó)合作夥伴

極狐GiLab鉑金級合作夥伴

掃二維碼用手機看

更多資訊

聯系我們

聯系我們

發(fā)布時(shí)間:2020-09-16 13:55:16
地址:蘇州市工業園區新平街388号
          騰飛創新園塔樓A617
電話:400-028-4008
          0512-62382981

關注我們

這(zhè)是描述信息

頁面(miàn)版權所有 -  蘇州華克斯信息科技有限公司  |  Copyright - 2020 All Rights Reserved.