问题标签 [jacoco-maven-plugin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
maven - 詹金构建后声纳未显示代码覆盖率
我们有一个多模块 Maven 项目。我们正在使用jacoco进行代码覆盖率分析。我准备了 pom 文件来运行测试用例并获取代码覆盖率。当我在本地构建项目时,我可以在声纳仪表板上看到代码覆盖率。
将更改推送到 github 并且触发 jenkins 构建后,声纳仪表板上的代码覆盖率不可用。我在 jenkins 构建日志中发现了以下错误:
未收集覆盖信息。也许您忘记在编译的类中包含调试信息?
jenkins 构建成功后如何使代码覆盖可用?
sonarqube - 声纳报告 + 多模块 maven + Jacoco 插件
我是声纳的新手。我有多模块 Maven 项目。请在下面找到项目结构
注意:(模块 C 是模块 A/模块 B 中的共享模块 - 意味着模块 C 内部将部分进入模块 A 、模块 B 库)根据项目要求,我们有这些结构。
- 模块 A - 适用于外部用户。
- 模块 B - 适用于内部用户。
模块 C - 两个模块的通用黑白。
我正在尝试为这两个模块创建单个声纳报告,但我无法将所有模块 junit 报告(模块 A 和模块 B 报告)集成到单个报告中。我遵循几个示例来组合多模块 maven 项目但没有任何效果。
类似问题1 类似问题2
github-example(声纳中给出的参考)
java - Jacoco Maven 多模块项目覆盖
似乎有几个问题,这些问题已经很老了,并且从 Java 8 对 Jacoco 的支持发生了变化。
我的项目包含以下结构
我已经配置了main pom
这样的
主 POM.xml
一个 Pom.xml
B pom.xml
我正在执行这个命令mvn clean package
。我可以看到 jacoco.exec 正在生成,但是我看不到任何 HTML 报告正在验证数据。
请帮我解决一下这个。另一点是,我的配置对Multi-Module
项目是否正确?
更新
已确定的问题。
<destFile>${project.basedir}/../target/jacoco.exec</destFile>
变成
<destFile>${project.basedir}/target/jacoco.exec</destFile>
现在它正在为各个模块生成报告。 知道如何生成合并报告
java - Maven 中 pluginManagement 的范围和报告.plugins.plugin.version 缺少警告
我的 Maven 项目给了我像这样的 reports.plugins.plugin.version 警告:
我知道 Maven 3对插件版本更严格,必须指定插件版本。我在 pluginManagement 中指定了版本:
当我在以下位置使用插件时,这可以正常工作并且没有警告build/plugins
:
但是,它不起作用reporting/plugins
:
我的问题是:指定的版本范围是否build/plugingManagement
仅限于<build>
标签内?我可以在不复制两个地方的插件版本的情况下修复警告吗?
这是生成警告的完整示例:
sonarqube - 与 sonarqube-maven-plugin 2.7.1 和 jacoco-maven-plugin 0.7.5 不兼容的版本 1007
JaCoCo SonarQube 不兼容版本 1007中讨论的问题
再次发生与sonarqube-maven-plugin 2.7.1
结合jacoco-maven-plugin 0.7.5.201505241946
执行sonar:sonar
结果
根据https://jira.sonarsource.com/browse/SONARJAVA-1091 ,这应该已经修复。
我的 SQ-Server 安装中的 java 插件是 3.3 版。
谁能证实这一点?
sonarqube - 在使用 jacoco 构建声纳期间出现错误“行必须为空或大于零(得到 0)”
我已将我的声纳 java 插件升级到 3.7。我们使用内置的 jacoco 插件来进行代码覆盖。我们使用 maven 目标 org.jacoco:jacoco-maven-plugin:prepare-agent 和 sonar:sonar 来获取由 jenkins 作业触发的声纳构建。但是发布升级后我收到以下错误:
以下是我的 SonarQube 5.1.2 版安装的插件详细信息:
- Java 3.7
- LDAP 1.3
- 吉特 1
- SVN 1
- Cobertura 1.6.3
我们没有使用 cobertura。而是使用上面提到的内置 jacoco。
我们正在使用 sonar-maven-plugin:2.7.1。
jacoco - 在运行集成测试之前,如何让 Maven 构建等待 Jetty 服务器以分叉模式启动?
我有一份集成测试的代码覆盖率报告。
我确实有集成测试,这些测试在 Maven 构建中成功运行。
当我单击 HTML 报告右上角的“会话”链接时,我可以在列表中看到我的测试类,但我现在看不到测试执行的主要类,并且所有覆盖率报告百分比都在零。
作为旁注,我的单元测试覆盖率工作正常,百分比显示正常。
我的配置如下:
请注意 JaCoCo 插件是如何在码头一号之前定义的。
控制台日志显示失败的连接尝试日志。集成测试无法连接到 localhost。这是因为 Jetty 服务器在 Maven 运行测试之前没有时间启动。
这也是另一个控制台日志位:
拥有start
值而不是run-forked
目标可以使测试运行良好。但我需要它作为run-forked
代码覆盖率报告。
使用该<waitForChild>false</waitForChild>
选项对问题没有任何改变。
在运行集成测试之前,如何让 Maven 构建等待 Jetty 服务器以分叉模式启动?
<maxStartupLines>200</maxStartupLines>
更新:我可以使用以下选项让 Maven 构建等待 Jetty 服务器以分叉模式启动。
但是现在,报告中没有看到我的集成测试,尽管它们运行良好。
我的日志说:
更新:如果我运行 Maven 命令mvn jacoco:report-integration
,控制台会抱怨缺少数据文件:
实际上,数据文件在 pom.xml 文件中指定为<dataFile>${project.build.directory}/coverage-reports/jacoco-it.exec</dataFile>
为什么它被查找为jacoco-it.exec
而不是coverage-reports/jacoco-it.exec
?
是因为 JaCoCo 报告是在 Jetty 服务器有时间停止并生成数据文件之前生成的吗?但是为什么不同的文件路径呢?以及如何告诉 JaCoCo 报告等待呢?
更新:我在集成测试stopWait
的目标中添加了 1 :stop
但这并没有改变这个问题。
更新:使用该选项运行构建-X
显示以下内容:
这告诉我在 Jetty 服务器停止之前正在生成报告。如果是这样的话,那就是错误的。Jetty 服务器停止后如何生成报告?
java - Jacoco Maven 插件 - 包括测试源
我是 Jacoco maven 插件的新手,并试图为我的测试类添加覆盖率分析(我正在使用带有故障安全插件的 TestNG)。
在检查了文档和一些教程后,我使它在Sources Root (src/main) 中的类上工作,但无法设法将这些类包含在Tests Root (src/test) 中。我的项目仅包含测试类,因此只有这些类才需要覆盖率报告。
在 IntelliJ 中,有一个选项“在测试文件夹中启用覆盖”,它可以满足我的需求。所以我认为应该有一种方法可以在插件配置中启用这些文件夹。
谢谢你的帮助!
unit-testing - 使用 Jacoco 从 Sonar 中的条件覆盖范围中排除 groovy slf4j 日志记录
我们正在使用带有 Jacoco maven 插件 0.7.4 的 SonarQube 5.1,并且我们所有的 slf4j 日志记录语句,例如log.debug('Something happened')
显示只有 2 个分支中的 1 个被覆盖。我知道这是因为 slf4j 在内部做了一个if debug
,这很好,但我们不希望这会影响我们的数字。我们对测试 slf4j 不感兴趣,我们宁愿不为不同的日志记录级别多次运行每个测试。
那么,我们如何告诉 Sonar 和/或 Jacoco 将这些行排除在覆盖范围之外呢?它们都具有可配置的文件排除项,但据我所知,这些仅用于将您自己的类排除在覆盖范围之外(使用目标目录),而不是导入的库。无论如何,我尝试添加groovy.util.logging.*'
到排除列表,但它没有做任何事情。
logger.isDebugEnabled() 正在杀死我的代码覆盖率。我打算在运行 cobertura 时将其排除在外,并建议对于 Cobertura,应使用“忽略”属性而不是“排除”。我在设置或文档中看不到 Jacoco 或 Sonar 的类似内容。
编辑:在运行 Jacoco 覆盖之后附加来自 Eclipse 的示例图像(Sonar 在其 GUI 中显示相同的内容)。这是来自我们的一个类的实际代码。
编辑 2:我们正在使用 Slf4j 注释。这里的文档: http ://docs.groovy-lang.org/next/html/gapi/groovy/util/logging/Slf4j.html
此本地转换使用 LogBack 日志记录为您的程序添加了日志记录功能。对名为 log 的未绑定变量的每个方法调用都将映射到对记录器的调用。为此,将在类中插入一个日志字段。如果该字段已存在,则使用此转换将导致编译错误。方法名称将用于确定在记录器上调用什么。
log.name(exp)
映射到
这里 name 是信息、调试、警告、错误等的占位符。如果表达式 exp 是常量或仅是变量访问,则不会转换方法调用。但这仍然会导致对注入的记录器的调用。
希望这能澄清发生了什么。我们的日志语句变成了 2 个分支 if,以避免为未启用的日志级别构建昂贵的字符串(据我所知,这是一种常见的做法)。但这意味着为了保证覆盖所有这些分支,我们必须针对每个日志级别重复运行每个测试。
java - 指示 Jacoco 和 Coveralls 忽略报告中的一些文件
我在带有 Maven 的 Java 项目中使用 Coveralls 为我的项目创建覆盖率报告,并且我希望避免某些类包含在覆盖率计算中。
现在,我认为我可以在构建阶段排除该类,例如MyClassTest.java
如下:
无论如何,覆盖率并没有减少,所以我猜这个类MyClass
仍然是从 Jacoco 报告中计算出来的。
在 travis 文件中,我将报告阶段称为:
任何想法?