声纳、Xerces冲突,Findbugs和ivy:report

8

我正在尝试为一个包含Findbugs规则的项目使用Sonar进行工作。

然而,在分析该项目时,Sonar anttask崩溃并显示以下错误:

Caused by: java.io.IOException: SAX2 driver class org.apache.xerces.parsers.SAXParser not found
    at edu.umd.cs.findbugs.filter.Filter.<init>(Filter.java:134)
    at edu.umd.cs.findbugs.FindBugs.configureFilter(FindBugs.java:516)
    at edu.umd.cs.findbugs.FindBugs2.addFilter(FindBugs2.java:374)
    at org.sonar.plugins.findbugs.FindbugsExecutor.execute(FindbugsExecutor.java:136)
    ... 50 more

在这个项目中,我们使用ivy来解析依赖,没有使用像xerces和xalan这样的库。我了解到xerces已经包含在JVM中,非常容易处理...
我尝试添加所有类型的依赖项以用于sonar.libraries属性,但是似乎没有效果,添加本地JRE库也似乎没有太大影响。
如何以机器无关的方式运行findbugs分析?
(Sonar版本:4.4,findbugs3插件)
更新: 我刚刚发现冲突的根源是在构建过程中早期的目标,去除它可以解决问题。当然,我仍希望保留我的ivy报告,所以问题仍然是如何让它正常工作...?

看起来你正在面对这个 bug: https://jira.codehaus.org/browse/MSONAR-56,我们无法在本地重现。你能否提供一个样例 Ant 项目来帮助我们重现这个问题? - Freddy - SonarSource Team
我会尽力在今天或明天制作一个干净的测试用例并更新错误报告。 - pvgoddijn
3个回答

12
升级我们的声纳到v4.4并将Sonar的质量配置文件从“Sonar way”(Java)更改为“具有Findbugs的Sonar way”后,我遇到了同样抱怨SAX2驱动程序的异常。
Can not execute SonarQube analysis: Can not execute Find bugs: SAX2 driver class org.apache.xerces.parsers.SAXParser not found

我通过将驱动添加到我的Maven命令中来解决这个问题:

-Dorg.xml.sax.driver=com.sun.org.apache.xerces.internal.parsers.SAXParser

下面是我的实际Maven命令,用于清理、编译、运行测试、分析代码并上传统计数据到Sonar(在命令行中修复也符合您的非机器特定偏好修复,不需要更改您的源代码)。

$ mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.fai
lure.ignore=true -Dorg.xml.sax.driver=com.sun.org.apache.xerces.internal.parsers.
SAXParser sonar:sonar

2
我们的解决方案:

无法执行Findbugs: SAX2驱动程序类 org.apache.xerces.parsers.SAXParser

不建议使用该方法。
mvn clean install sonar:sonar

通过一个命令来调用Sonar,但需要在单独的步骤中执行。

mvn clean install
mvn sonar:sonar

0
这可能会解决问题: 从以下地址下载xerces-2.9.0.jar文件:

http://www.java2s.com/Code/Jar/x/Downloadxercesjar.htm

将此jar添加到(sonar根文件夹)\extensions\plugins中

在所需的文件夹中尝试此命令

mvn clean install sonar:sonar

祝你好运


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接