当前位置: 首页 > 知识库问答 >
问题:

在Azure devops构建后,SonarCloud中不会出现代码覆盖率

司徒正信
2023-03-14

我们有一个多模块Maven项目,并使用JaCoCo进行代码覆盖率分析。我准备了pom文件来运行测试用例并获取代码覆盖率。

下面是我的pom.xml,添加了JaCoCo和其他插件,并且在Azure Devops构建中,在Maven任务中传递命令clean install sonar:sonar,尝试clean test sonar:sonar,参数-dsonar.coverage.JaCoCo.xmlreportpaths=target/site/jacoco-utpom.xml中定义。

我在日志中看到以下细节。

Maven日志:

分析完成日志:

测试运行:

    <plugins>
        <!--Jacoco Maven Plugin -->
        <plugin>
           <groupId>org.jacoco</groupId>
           <artifactId>jacoco-maven-plugin</artifactId>
           <version>0.8.7-SNAPSHOT</version>
           <executions>
        <!--
        Prepares the property pointing to the JaCoCo runtime agent which
        is passed as VM argument when Maven the Surefire plugin is executed.
        -->
            <execution>
                <id>pre-unit-test</id>
               <goals>
                    <goal>prepare-agent</goal>
              </goals>
              <configuration>
            <!-- Sets the path to the file which contains the execution data. -->
                <destFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</destFile>
            <!--
                Sets the name of the property containing the settings
                for JaCoCo runtime agent.
            -->
                <propertyName>surefireArgLine</propertyName>
            </configuration>
          </execution>
    <!--
        Ensures that the code coverage report for unit tests is created after
        unit tests have been run.
    -->
           <execution>
               <id>post-unit-test</id>
                <phase>test</phase>
                <goals>
                  <goal>report</goal>
                  </goals>
              <configuration>
            <!-- Sets the path to the file which contains the execution data. -->
                   <dataFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</dataFile>
            <!-- Sets the output directory for the code coverage report. -->
                   <outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
              </configuration>
            </execution>
      </executions>
  </plugin>
         
         <!-- Maven ant plugin -->
        <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-antrun-plugin</artifactId>
           <version>3.0.0</version>
        </plugin>
        
        <!-- Maven Surefire Plugin -->
        <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-surefire-plugin</artifactId>
             <version>3.0.0-M5</version>
             <configuration>
    <!-- Sets the VM argument line used when unit tests are run. -->
               <argLine>${surefireArgLine}</argLine>
    <!-- Skips unit tests if the value of skip.unit.tests property is true -->
               <skipTests>${skip.unit.tests}</skipTests>
    <!-- Excludes integration tests when unit tests are run. -->
                <excludes>
               <exclude>**/IT*.java</exclude>
                </excludes>
               </configuration>
        </plugin>
        
        <!-- Sonar Maven Plugin -->
        <plugin>
           <groupId>org.sonarsource.scanner.maven</groupId>
           <artifactId>sonar-maven-plugin</artifactId>
           <version>3.7.0.1746</version>
        </plugin>

目标:“清洁验证声纳:声纳”

选项:'-dsonar.projectkey=**-dsonar.organization=**

-dsonar.host.url=https://sonarcloud.io-dsonar.login=**

PublishJUnitResults:

CodeOverageToolOption:“Jacoco”

CodeOverageClassFilesDirectories:“core/target/classes,/core/target/test-classes”

MavenDirectory:“/usr/local/apache-maven/apache-maven-3.6.3/'

MavenSetm2Home:false

MavenOptions:'-xmx3072m'

SQMavenPlugInversionChoice:“POM”

经过几次更改后,我可以看到Jacoco报告被选中,但无法看到代码覆盖率

传感器JaCoCo XML报表导入html" target="_blank">程序[JaCoCo]

[报告]编写包含338个类的捆绑包“Jacoco报告”

[信息]已执行的任务

[信息]----------------------------------------------------------------------------------------------------------------------------------------------------------------

[信息]--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

共有1个答案

松成和
2023-03-14

请检查您是否按照以下步骤配置了Azure管道:

  1. 在您的组织中的Azure DevOps上安装扩展SonarCloud。
  2. 添加新的SonarCloud服务endpoint。
  3. 在生成步骤之前添加“准备分析配置”任务。
  4. 在生成步骤之后添加“运行代码分析”任务。
  5. 添加“发布质量门结果”任务。

如果问题仍然存在,为了让我们进一步调查这个问题,请分享一个示例来展示您的Azure管道的详细配置。您可以将管道定义导出为YAML文件,不要忘记在YAML文件中屏蔽或隐藏您的私人信息。

我注意到关于Maven任务的文档中的参数“Run SonarQube或SonarCloud Analysis”(SQAnalysisEnabled)的描述:

因此,正如我上面提到的,请确保在管道中的Maven任务之前添加了Prepare Analysis Configuration任务。

 类似资料:
  • 声纳投射物。特性 sonar.projectname=test sonar.language=js sonar.sources=src sonar.tests=src/app/client/src/app/sonar.javascript.lcov.reportpaths=src/app/client/src/app/sonar.javascript.lcov.reportpaths=src/ap

  • 我已经为我的。NET核心项目在Azure Devops中使用。带有SonarCloud模板的NET Core。当我构建时,分析在SonarCloud中运行,但代码覆盖率为0%(我的解决方案中有测试)。 无论我对构建做什么配置调整,我都不能让代码覆盖工作。 我错过了什么? 我看到了这篇文章,https://dejanstojanovic . net/aspnet/2019/may/publishin

  • 我正试图用声纳和詹金斯来覆盖代码。我看到Jenkins的Sonar插件成功地执行JUnit测试用例并成功完成构建。但Sonar不会在项目上显示代码覆盖率结果(始终显示代码覆盖率为0.0%)。但声纳显示“单元测试成功”。 我用Maven和Jenkins还有Sonar 我在执行声纳插件时,在Jenkins日志中得到以下消息: 有谁能帮助我在任何声纳项目中获得正确的代码覆盖率吗。

  • 代码覆盖是查找未被测试执行的代码区域的过程。不过要记住的是这并不能说明你测试代码的有效性。 在requirements.txt文件中添加依赖包: coverage==4.4.2 然后,我们在manage.py中新增一个命令: import coverage COV = coverage.coverage( branch=True, include='project/*',

  • 这是一个重要的可量化指标,如果代码覆盖率很高,你就可以放心的修改代码,在发版本的时候也能睡个安稳觉。否则就是拆东墙补西墙,陷入无尽的 bug 诅咒中。 那么在 OpenResty 里面如何看到代码覆盖率呢?其实很简单,使用 LuaCov 可以很方便的实现。 我们先了解下 LuaCov,这是一个针对 Lua 脚本的代码覆盖率工具,通过 luarocks 来安装: luarocks install l

  • 我们在项目的模块P中有一个接口。我们正在使用maven构建代码。界面如下 在类中重写,并使用模块Q的注释来实现。maven构建工作正常很多天了。 我为这个界面添加了一个新方法 我已经用注释覆盖了Class中的这个方法,并执行了构建。构建抛出错误 方法不会重写或实现超类型中的方法 我已经正确添加了模块的配置。我正在使用Java1.8。请让我知道缺少任何配置。 在这个链接中也发现了同样的错误。 我也尝