现在我在build.gradle中有FindBugs,如下所示
apply plugin: 'findbugs'
findbugs {
ignoreFailures = true
}
tasks.withType(FindBugs) {
reports {
xml.enabled = false
html.enabled = true
}
}
但是,如果我尝试同时启用HTML报告(供开发人员在他们的计算机上查看)和XML报告(我的jenkins CI计算机),我会得到以下内容
FindBugs任务只能启用一个报告,但不止一个 一份报告已启用。您需要禁用其中一个。
是否有某种方式/黑客能够让我生成两者 - 即使是通过两个不同的任务?
答案 0 :(得分:2)
你可能可以,但是在插件的当前状态下,看起来你必须定义一个从FindBugs扩展的单独任务,但配置与标准配置不同。 问题是你确实会运行两次FindBugs,这可能会对任何体面的代码库造成性能损失。
显然你不能使用tasks.withType(FindBugs) { ... }
配置你的任务,你必须明确地通过任务名称来完成。
注意:如果您正在运行此操作,例如: Jenkins,你希望你的build.gradle生成xml报告,让Jenkins从xml报告中生成html报告。这样,它就不会在你的构建中执行两次。
答案 1 :(得分:1)
我通过配置Gradle脚本解决了这个问题,因此它为XML和HTML报告生成了findbugs任务,然后生成一个取决于其他两个任务的任务。
def findbugsTask = task('findbugs') {
group 'Verification'
}
[ 'Html', 'Xml' ].each { reportType ->
findbugsTask.dependsOn task("findbugs${reportType}", type: FindBugs) {
dependsOn 'compileJavaWithJavac'
reports {
html.enabled = reportType == 'Html'
xml.enabled = reportType == 'Xml'
}
}
}
请注意,这将运行Findbugs工具两次,这通常不应该是持续集成的问题(除非您的代码库很大)。
答案 2 :(得分:1)
您可以生成两个报告,而无需两次运行FindBugs,但这并不直观。如果您看一下FindBugs generates its html report的方式,您会发现它实际上首先生成了xml,而只是使用xslt将其转换为html。知道了这一点,并随后提供了记录解决方案的spotbugs issue资源,我使用与FindBugs相同的方法。
在build.gradle文件中,我仅生成xml报告,然后运行新任务,该任务使用FindBugs provided stylesheets之一将xml报告转换为html。
server {
listen 80;
listen [::]:80;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name mydomain.org www.mydomain.org;
root /var/www/mydomain.org/html/frontend/site;
location / {
try_files $uri $uri/ /index.html;
}
location /admin {
try_files $uri $uri/ /admin/index.html;
}
}