我有一些 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/