【问题标题】:Can I analyze only .class files wih sonarqube?我可以只用 sonarqube 分析 .class 文件吗?
【发布时间】:2019-09-04 06:11:26
【问题描述】:

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

当对提取的 jar 文件运行 sonar-scanner 时,我总是收到这样的消息:

18:49:58.364 调试:“freemarker/template/TemplateServletUtils.class”用语言“null”索引

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

18:58:41.487 警告:文件“/home/hans/testcode/testproj/freemarker/template/SimpleHash.class”被忽略,因为它不属于强制语言“java”

谢谢!

【问题讨论】:

  • 不,你不能。 Sonarqube 分析源代码,而不是编译器生成的代码。后者可能会更改/优化某些地方,使类文件不再反映原始 .java 代码。
  • 好吧,现在我很困惑 - 我认为强烈建议将类文件提供给 sonarqube,如下所述:docs.sonarqube.org/display/PLUG/Java+Plugin+and+Bytecode。我错过了什么吗?

标签: java sonarqube sonarqube-scan


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-04-02
    • 2019-02-20
    • 2019-07-01
    • 1970-01-01
    • 2017-10-22
    • 2021-05-13
    • 2015-03-20
    • 2017-02-18
    • 1970-01-01
    相关资源
    最近更新 更多