java - 我可以只用 sonarqube 分析 .class 文件吗?

标签 java sonarqube sonarqube-scan

我有一些 jar 文件,我想对其运行 sonarqube 扫描(尤其是 findbugs),但我没有源代码。仅针对类文件运行扫描是否有任何更改?

当对提取的 jar 文件运行 Sonar 扫描仪时,我总是收到这样的消息:

18:49:58.364 DEBUG: 'freemarker/template/TemplateServletUtils.class' indexed with language 'null'

当我将 sonar-project.properties 中的语言定义为“java”时,我得到了

18:58:41.487 WARN: File '/home/hans/testcode/testproj/freemarker/template/SimpleHash.class' is ignored because it doesn't belong to the forced language 'java'

谢谢!

最佳答案

SonarQube 架构不支持此用例。

但是,您可以“欺骗”SonarQube。首先,您可以运行 CFR 以在 SonarQube 中显示源文件。 其次,为了获得错误报告,您可以手动运行 SpotBugs 并将报告放在 /target/findbugsXml.xml/target/spotbugsXml.xml 中。如果文件存在,SpotBugs 插件将假设已经使用 Maven 完成分析并从 XML 加载问题。

什么可能会破坏: - 有些问题可能很难映射到他们的反编译源文件。 - 行映射可能会失败,因为反编译器不提供 1 对 1 映射。

替代方案: 这是一个 Jenkins 配置示例,它结合了几个工具,包括 CFR 和 FSB: https://github.com/GoSecure/jenkins-fsb

关于java - 我可以只用 sonarqube 分析 .class 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55669231/

相关文章:

java - 如何在 Wildfly 服务器上运行的测试中获取 sonarqube 代码覆盖率

jenkins - 返回sonarqube的结果

sonarqube - 获取 SonarQube 服务器中的所有项目名称

Java/有关对象声明和健全性检查的处理

java - 如何解决 SonarQube "needlessly boxes a boolean constant"中的主要问题

java - 如何将 'main/src/.../messages.properties' 文件添加到 ShrinkWrap WebArchive?

Android gradle 构建 robolectric 测试的代码覆盖率

Gradle Sonar 插件不扫描根项目

java - 在圆霍夫变换中,累加器分辨率 (dp) 的反比​​是多少?它如何影响圆检测?

java - 如何为 IntelliJ IDEA 中的所有项目设置默认项目位置?