ivy - Sonar Xerces 冲突 Findbugs 和 ivy :report

标签 ivy sonarqube findbugs xerces

我正在尝试让 Sonar 为包含 Findbugs 规则的质量配置文件的项目工作。

但是,在分析项目时, 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 报告,所以问题仍然是我如何让它发挥作用......?

最佳答案

在将我们的 Sonar 升级到 v4.4 并将 Sonar 的质量配置文件从“Sonar 方式”(Java)更改为“带有 Findbugs 的 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 命令,用于清理、编译、运行测试、分析代码并将统计信息上传到 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

关于ivy - Sonar Xerces 冲突 Findbugs 和 ivy :report,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25872710/

相关文章:

java - findbugs 无法检测到 NumberFormatException

java - Findbugs 错误 - Bug : br is null guaranteed to be dereferenced on exception path

java - CheckStyle 规则或类似的规则以防止非原始数据类型上的 == ?

java - ivy.xml以及如何配置

java - 使用 ant/ivy 运行构建时出现 Selenium 远程 webdriver 错误

gradle - 新的SonarQube Gradle插件在哪里?

java - 不应在 try/catch 上取消引用 SonarQube 空指针

ant - 我可以一起关闭 .ivy 缓存吗?

java - 了解 Eclipse 类路径声明

azure - 如何从 Bamboo 执行 SonarQube Runner?