java - 在 Tomcat 上使用 JaCoCo Java 代理获取我的应用程序的代码覆盖率

标签 java tomcat sonarqube jacoco

我想使用 JaCoCo 测量集成测试的代码覆盖率和 Sonar 工具。

为此,我启动了配置了 JaCoCo 代理的 Tomcat 5.5,以便从 JaCoCo 获取转储文件。

因此,我为此设置了 JAVA_OPTS:

set JAVA_OPTS=-Xrs -XX:MaxPermSize=256m -XX:PermSize=256m -XX:NewRatio=3 -Xms512m -Xmx1024m -XX:+UseParallelGC -javaagent:C:\dev\servers\jacoco-agent.jar=destfile=C:\dev\servers\jacoco.exec,append=true,includes=my.application.*

当我启动 Tomcat 时,生成了 C:\dev\servers\jacoco.exec 文件,但没有填充任何数据。

我在服务器配置中忘记了什么吗?

问候。

最佳答案

我意识到 2 年前问这个问题时这可能不是一个选项,但目前您有一些其他选项可用于获取 JaCoCo 执行数据而无需关闭 Tomcat(或任何使用 JaCoCo java 代理检测的 JVM) .

首先查看 JaCoCo Java 代理的当前文档:http://www.eclemma.org/jacoco/trunk/doc/agent.html

您可以在 JaCoCo 代理上使用 output=tcpserver 选项让 Java 代理监听命令。您可以设置 address=* 让 tcpserver 监听所有接口(interface),您可以设置 port=6300 参数来选择 tcpserver 应该监听的端口。

通过 tcpserver,可以指示 JaCoCo java 代理在您需要时向您发送数据。

如果您的 JVM 当前正在公开 JMX,您可以使用另一个选项,而无需打开其他端口。通过设置 jmx=true 选项,JaCoCo java 代理公开了一个您可以与之交互的 MBean。

如果您使用的是 Maven,则可以查看我最近编写的插件,以便在运行时从远程 JVM 收集 JaCoCo 数据。该插件的项目位于:
https://github.com/mattcj/jacocotogo

关于java - 在 Tomcat 上使用 JaCoCo Java 代理获取我的应用程序的代码覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6856744/

相关文章:

java - 缓存java编译

java jsp if语句

sonarqube - 如何在导入语句中抑制 SonarQube 规则?

java - SuppressWarnings 不适用于 Sonarqube

java - 使用 Java 连接到 DB2 zOS 数据库时出错

java - Java 或 C++ 是否缺少任何 OO 特性?

java - 将特定的 INFO 日志行发送到不同的文件

eclipse - 如何配置 build.gradle 以便我的项目在 tomcat webapps 中构建?

gwt - 在 Tomcat 上使用 GWT 集成 Exchange 登录

java - Sonarqube 的 UndocumentedApi 变得毫无用处?