我一直在尝试使用SonarQube + FindBugs + FindSecBugs插件扫描代码。
这个想法是要检测代码中的漏洞,正如在github项目主题中所说的那样,它可以与scala https://github.com/find-sec-bugs/find-sec-bugs
一起使用。我已经按照文档中的说明安装了该插件,并尝试了几次扫描,但是与scala中的漏洞无关的事情没有出现。
因此,为了确定代码是否真的不错,或者SonarQube设置是否有错误配置,我去了http://find-sec-bugs.github.io/bugs.htm,我拿了一个示例(可能的路径遍历),插入了示例代码,然后再次运行扫描仪。找不到。
在质量配置文件中激活了规则(安全性-潜在路径遍历(读取文件)),尽管它是Java配置文件,但由于该示例中的代码是Scala,因此已将其分配给项目。
我注意到,来自find-sec-bug的所有规则都是Java规则,所以我想知道它们是否不能在scala上运行,或者我可以做一些其他事情来使其生效。
在此先感谢您,如果您需要其他任何信息,我们很乐意为您提供。
答案 0 :(得分:1)
看起来发生这种情况的主要原因是出于某些原因明确排除了Scala错误模式:
SonarQube架构在多语言支持方面有很多限制。 它与声纳源插件设计紧密相关。
- 语言不能具有相同的扩展名(https://jira.sonarsource.com/browse/MMF-672)
- 存储库不能包含适用于多种语言的规则。 (如果只有Scala代码,除非存在一个Java文件,否则将不会启用Java核心规则)
- 传感器与语言定义结合在一起(取决于声明它的最受欢迎的插件)。
- 等,等等。
来源:https://github.com/spotbugs/sonar-findbugs/issues/108#issuecomment-305909652
所有排除项都可以在此处查看:https://github.com/spotbugs/sonar-findbugs/commit/526ca6b29fae2684f86b1deba074a4be8a05b67e
特别是对于Scala:
static exclusions = ['CUSTOM_INJECTION',
'SCALA_SENSITIVE_DATA_EXPOSURE',
'SCALA_PLAY_SSRF',
'SCALA_XSS_TWIRL',
'SCALA_XSS_MVC_API',
'SCALA_PATH_TRAVERSAL_IN',
'SCALA_COMMAND_INJECTION',
"SCALA_SQL_INJECTION_SLICK",
"SCALA_SQL_INJECTION_ANORM",
"PREDICTABLE_RANDOM_SCALA"]