3

我一直在尝试使用 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-bugs 的所有规则都是 java 的,所以我想知道它们是否不适用于 scala,或者我可以做些什么来使其工作。

提前致谢,如果您需要任何额外信息,请告诉我,我很乐意为您提供。

4

1 回答 1

3

看起来发生这种情况的主要原因是由于某些原因明确排除了 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"]
于 2018-12-06T13:34:49.293 回答