声纳Xerces冲突Findbugs和常春藤:报告

时间:2014-09-16 15:24:41

标签: ivy sonarqube findbugs xerces

我正在努力让声纳为一个包含Findbugs规则的质量档案的项目工作。

然而,在分析项目时,声纳反任务会因以下错误而崩溃:

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分析(以独立于机器的方式)?

(声纳版本:4.4,findbugs3插件)

更新: 我刚刚发现冲突的根源是在构建的早期有一个目标,删除它修复它。当然我非常想保留我的常春藤报告,所以问题仍然是我如何让这个工作......?

3 个答案:

答案 0 :(得分:12)

将我们的声纳升级到v4.4并从Sonar方式改变Sonar的质量配置文件&#39; (Java)以及使用Findbugs&#39;的Sonar方式。抱怨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

Bellow是我真正的maven命令,用于清理,编译,运行测试,分析代码并将统计数据上传到声纳(在命令行中修复也符合非机器特定的首选项修复,并且不需要更改源代码)< / p>

$ 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

答案 1 :(得分:2)

我们的解决方案

  

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

不使用

mvn clean install sonar:sonar

在一个命令中,但是在一个单独的步骤中调用声纳

mvn clean install
mvn sonar:sonar

答案 2 :(得分:0)

这可能会解决问题: 从以下网址下载xerces-2.9.0.jar:

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

将此jar添加到(声纳根文件夹)\ extensions \ plugins

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

  

mvn clean install声纳:声纳

祝你好运