我正在为我的项目设置Jacoco Gradle插件。该插件执行良好,并生成覆盖报告,但它不排除我将排除的包。
我想包含的类在com/xxx/ws/hn/**中,我想排除的类在com/xxx/ws/企业/**中。
这是我的Gradle脚本:
apply plugin: "jacoco"
jacoco {
toolVersion = "0.6.2.201302030002"
reportsDir = file("$buildDir/reports/jacoco")
}
test {
jacoco{
excludes = ["com/xx/ws/enterprise/**/*"]
includes = ["com/xxx/ws/hn/**/*"]
append = false
}
}
jacocoTestReport {
dependsOn test
description = "Generate Jacoco coverage reports after running tests."
executionData = files('build/jacoco/test.exec')
reports {
xml.enabled true
html.enabled true
}
}
我有什么遗漏吗?我尝试过各种排除模式,包括“.”包的分隔符,而不是“/”,但似乎没有任何效果。任何帮助都将不胜感激。
为了巩固(并验证)Joachim的答案,我看到了这篇SO文章,发现用单个通配符指定规范类名、类路径样式(用斜杠,而不是句点)实际上效果很好。例如,以下是在我的构建中工作的排除列表,定义为单独的gradle文件中的列表:
def testExcl = [
'android/*',
'com/android/*',
'com/nativelibs4java/*',
'com/ochafik/*',
'com/fasterxml/*',
'com/esotericsoftware/*',
'com/google/*',
'com/lmax/*',
'com/sun/*',
'jdk/*',
'mockit/*',
'org/apache/*',
'org/bridj/*',
'org/gradle/*',
'org/hamcrest/*',
'org/junit/*',
'org/slf4j/*',
'sun/*',
'worker/*',
'*Test',
'*TestIntegration',
'*AllTests',
'*Suite'
]
我尝试了10到12种格式化类名的方法,这是唯一有效的方法。我不知道为什么像这样简单/基本的东西在Gradle的上下文中如此难以找到明确的答案(即在JaCoCo的官方文档之外,那里没有关于Gradle集成的文档,但是有Ant和Maven集成文档)。
如果其他人试图让JaCoCo排除类,希望这会有所帮助。
更新:这在Gradle7中发生了变化(我从5.6.1改为7.1.1,所以不确定Gradle6),不再工作。对于Gradle 7,您需要替换为。;以下是我的最新排除条款:
def testExcl = [
'android.*',
'com.android.*',
'com.nativelibs4java.*',
'com.ochafik.*',
'com.fasterxml.*',
'com.esotericsoftware.*',
'com.google.*',
'com.lmax.*',
'com.sun.*',
'jdk.*',
'mockit.*',
'org.apache.*',
'org.bridj.*',
'org.gcpud.common.*',
'org.gcpud.testutil.*',
'org.gradle.*',
'org.hamcrest.*',
'org.junit.*',
'org.slf4j.*',
'sun.*',
'worker.*',
'*Test',
'*Test$*',
'*TestIntegration',
'*AllTests',
'*Suite'
]
另请参见以下SO帖子,了解从报告中排除类别的其他方法(从报告中排除,而不是覆盖范围本身):
使用Gradle过滤JaCoCo覆盖报告
我还没有验证这一点,但是当我阅读JaCoCo留档时,它指出通配符可以使用,但是所有的例子只有一个*,而不是像你的例子所示的两个。
http://www.eclemma.org/jacoco/trunk/doc/agent.html
当我运行mvn pmd:check并将JAVA_HOME设置为jdk 1.8时,这运行平稳。当我将jdk切换到1.7时,我得到以下异常。PMD支持1.7,所以不确定为什么我得到这个错误。 原因:org.apache.maven.plugin.PluginContainerException:执行org.apache.maven.plugins时遇到API不兼容:maven-pmd-plugin:
在我的项目中添加kongchen swagger-maven-plugin(版本3.1.0)后,log4j停止工作。我们正在使用Spring(版本4.1.5)和slf4j(版本1.7.5)如果我在pom.xml中注释掉kongchen插件依赖,log4j再次开始工作。你能帮忙吗?谢谢! 这是我的pom的内容。xml `http://maven.apache.org/maven-v4_0_0.xsd
我目前正在使用带有Spring Data commons 1.9.1和Spring JPA 1.7.1的JpaSort。我需要使用QueryDSL,因为JPA不允许为空值定义排序。 这是我的存储库 我在我的控制器中这样做: 这就是我对JPA的看法: 这是我为QueryDSL更改的内容: 然而,似乎什么都没有得到整理。我已经启用了调试日志记录,我看到了这一点: 如果我将其更改为: 然后,按我的“数据
一些stackoverflow帖子暗示我的类路径中有spring-asm的冲突版本。通过gradle依赖分析,我看到我没有spring-asm的多个版本,但我有spring-core的多个版本(版本3.1.4和5.0.2) 我试图排除3.1.4版本,但无法使其工作。我试图在依赖级别和配置级别都排除它。 即使有了上述更改,我仍然在依赖分析输出中发现Spring-Core:3.1.4.Release。
问题内容: 我试图使用 AngularJS 提供的和函数显示/隐藏一些HTML 。 **** 根据文档,这些功能的各自用法如下: ngHide – {表达式}-如果表达式为true,则分别显示或隐藏该元素。ngShow – {表达式}-如果表达式为真,则分别显示或隐藏该元素。 这适用于以下用例: 但是,如果我们使用对象中的参数作为表达式,则和被赋予正确的/ 值,但这些值不会被视为布尔值,因此始终返
我在一个网站上工作,遇到了一个问题,点击我的“删除”链接会出现一个错误页面。在localhost上运行良好-无法理解为什么在Heroku站点上会有所不同。 有人知道这是怎么回事吗? 我的“图片”控制器: 我的图片/新视图: 以下是我尝试删除图片时的heroku日志(从导航到新图片页面开始(同一视图中的新建和编辑功能): 2015-11-15T16:13:49.189857 00:00 heroku