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

声纳和哈科:由于没有类文件,因此无法对项目覆盖范围进行JaCoCo分析

欧金鹏
2023-03-14

我使用Jaco,Sonar,Maven来报告单元测试覆盖率,这是一个Spring靴项目,请参阅我的项目拱门如下:

web
 |-src/test/java --unit test classes
 |-target/
 |-pom.xml
service
 |-pom.xml
pom.xml
target
 |-sonar
 |-jacoco.exec

我在父 pom 中的专家配置.xml:

<plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.7.8</version>
                <configuration>
                    <destFile>${project.basedir}/../target/jacoco.exec</destFile>
                    <append>true</append>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>prepare-agent</goal>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

web/pom.xml

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.0.0-M4</version>
                <configuration>
                    <skipTests>false</skipTests>
                    <redirectTestOutputToFile>true</redirectTestOutputToFile>
                    <testFailureIgnore>true</testFailureIgnore>
                    <argLine>${argLine}</argLine>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.maven.surefire</groupId>
                        <artifactId>surefire-junit4</artifactId>
                        <version>3.0.0-M4</version>
                    </dependency>
                </dependencies>
            </plugin>

第一步:运行< code > mvn clean org . jaco co:jaco co-maven-plugin:0 . 7 . 8:prepare-agent package-dmaven . test . failure . ignore = true-q

文件 jaco.exec 是在文件夹目标/jaco.exec 中生成的

步骤2:在cmd以下运行:

mvn sonar:sonar -Dsonar.projectKey="projectName" -Dsonar.login={key} -Dsonar.host.url=http://ip:port -Dsonar.jdbc.url=jdbc:postgresql://ip:port/sonar -Dsonar.java.binaries=target/sonar

已生成声纳文件夹

sonar
 |-.sonar_lock
 |-projectName.pdf
 |-report-task.txt

我检查了projectName.pdf,声纳分析有,但测试覆盖率为0,只有单元测试计数是正确的,然后我打开Sonarqube发现测试覆盖率也是0。

最后,我检查了声纳日志,发现以下日志:<code>没有Jacoco…

< code>mvn声纳:声纳记录:

[INFO] Sensor JaCoCoSensor [java]
[WARNING] Property 'sonar.jacoco.reportPaths' is deprecated (JaCoCo binary format). 'sonar.coverage.jacoco.xmlReportPaths' should be used instead (JaCoCo XML format).
[INFO] No JaCoCo analysis of project coverage can be done since there are no class files.
[INFO] Sensor JaCoCoSensor [java] (done) | time=1ms
[INFO] Sensor JavaXmlSensor [java]

问题:

  1. 为什么声纳找不到哈科类文件,它找到哈科.exec或其他文件。
  2. 如何在声纳中基因单元测试覆盖率。

谢谢

共有1个答案

夹谷阳夏
2023-03-14

检查后,我解决了这个问题。

解决这个问题的关键是sonar参数<code>sonar.java。二进制文件,此参数是必需的,应设置生成字节码的路径,请参阅sonarqube文档:https://docs.sonarqube.org/latest/analysis/languages/java/

sonar.java。二进制文件(必需)

包含与源文件对应的编译字节码文件的目录的逗号分隔路径。

所以我应该做的是更新mvn声纳:声纳的参数,改变

< code >-dsonar . Java . binaries = target/sonar

到<code>Dsonar.java。binaries=target,target/sonar没有类,但在target中有类。

完成后,将运行jacoco分析,输出为:

[INFO] Sensor JaCoCoSensor [java]
[WARNING] Property 'sonar.jacoco.reportPaths' is deprecated (JaCoCo binary format). 'sonar.coverage.jacoco.xmlReportPaths' should be used instead (JaCoCo XML format).
[INFO] Analysing /Users/rollsbean/workRepo/my-project/common/../target/jacoco.exec
[INFO] Sensor JaCoCoSensor [java] (done) | time=56ms
[INFO] Sensor JavaXmlSensor [java]
[INFO] 1 source files to be analyzed
[INFO] Sensor JavaXmlSensor [java] (done) | time=7ms
...
[INFO] Sensor JaCoCoSensor [java]
[WARNING] Property 'sonar.jacoco.reportPaths' is deprecated (JaCoCo binary format). 'sonar.coverage.jacoco.xmlReportPaths' should be used instead (JaCoCo XML format).
[INFO] Analysing /Users/rollsbean/workRepo/my-project/web/../target/jacoco.exec
[INFO] Sensor JaCoCoSensor [java] (done) | time=245ms
[INFO] Sensor JavaXmlSensor [java]
[INFO] 1 source files to be analyzed
[INFO] 1/1 source files have been analyzed
[INFO] Sensor JavaXmlSensor [java] (done) | time=206ms
...

仅此而已,希望对您有所帮助。

 类似资料:
  • 我正在将 Gradle 4.4 用于 JaCoCo 0.8.0 的 Java 项目,并将声纳与声纳贾瓦 5.0.1 配合使用。 我有一个用龙目岛和注释的课程。 我在build.gradle中的JaCoCo配置如下所示: 此外,我有lombok.confi文件,其属性为< code > lombok . addlombokgeneratedannotation = true ,生成的内容实际上有<

  • 我正在运行我的selenium项目模块,它不是主项目的一部分,我用Jacoco maven插件和surefire插件运行selenium测试,Jacoco只给出了selenium项目的代码覆盖(exec文件),而不是整个项目...我需要如何配置我的Jacoco和Surefire以获得外部/整个项目覆盖??

  • 我们有一个多模块的maven项目。 每个模块都有一对testng和powermock单元测试用例。我们正在使用jacoco进行代码覆盖率报告。但是,jacoco在分析单元测试复盖率时基于testng单元测试用例,而忽略了powermock单元测试用例。因此,总的代码覆盖率越来越低。 如何配置jacoco来同时获取testng和jacoco测试用例?

  • 似乎有几个问题,这些问题很老了,而且从Java 8对Jacoco的支持开始就发生了变化。 我的项目包含以下结构 我已经这样配置了 主要聚甲醛.xml 一个Pom.xml B pom.xml 我正在执行这个命令< code>mvn clean package。我可以看到jacoco.exec正在生成,但是我看不到任何验证数据的HTML报告。 请帮帮我。另一点是,我的配置对于项目是否正确? 更新 已识

  • 我正在尝试为webapp生成代码覆盖率,以便使用jacoco和sonar进行手动测试。 我能够通过以下方式修改catalina.bat来生成jacoco.exec文件: I然后复制JACOCO。执行文件到sonarcube内的目标文件夹,然后运行ant sonar。建造。xml包含以下条目: 我从ant获得的输出如下。我在url上看不到任何报道http://localhost:9000/dashb

  • 我正在使用Ant在RHEL6机器上运行Sonar Java代码分析。对于集成测试分析,我使用JaCoCo sonar插件。我的库类路径中有插件。当我运行Selenium测试时,会生成一个“jacoco.exec”文件(10个测试大约1MB)。然后在我的Sonar Ant目标中激活Jacoco插件,并将其导入Sonar。声纳分析日志显示,已对Jacoco文件进行了分析(耗时约5000毫秒)。然而,我