【问题标题】:What's the current state of static analysis tools for Scala?Scala 的静态分析工具的现状如何?
【发布时间】:2014-05-02 07:12:24
【问题描述】:

我在 Scala 中看到了一个关于静态分析的 StackOverflow 问题,但该问题在 2009 年得到了回答。如您所知,Scala 工具正在迅速变化。

因此,我想知道是否有熟悉 Scala 中静态分析工具当前状态的人可以告诉我,例如,是否存在与 Scala 等效的 Findbugs。我发现 Findbugs 对 Scala 发出了许多不必要的警告,可能与“对象”单例编译为字节码的方式有关,由于特征等。我听说 Scalastyle 不仅是 Java 的 CheckStyle 的 Scala 版本,它还包括一些 Findbugs 和 PMD。但是,如果它没有实现所有 Findbugs 和/或 PMD,那么还有其他工具可以补充它吗?或者,Scalastyle 不仅对样式检查有好处,而且对提高代码质量有好处吗?

另外,Scala 与 Sonar 的集成怎么样? Scala Sonar 插件(适用于 Scalastyle)可靠吗?

【问题讨论】:

    标签: scala static-analysis sonarqube scalastyle


    【解决方案1】:

    这是截至 2014 年 8 月的更新答案,适用于一些针对 Scala 或与 Scala 配合良好的用户。

    我个人认为 JVM 或 Java 最终会出现太多误报,或者进行主要针对 Java 特定类的检查。例如,由于在 Scala 中我们不倾向于使用 Java 集合,因此不需要所有基于 findbugs 集合的检查。另一个例子是检查使用与 Scala 无关的静态字段。

    【讨论】:

    • 是否有人能够配置 Azure CI/CD 管道?
    【解决方案2】:

    根据 Codacy,以下是工具(更新至 2015 年 10 月)

    1. ScalaStyle
    2. WartRemover
    3. Abide
    4. Scapegoat - sbt-scapegoat 适用于 Scala 2.11.x+

    来源: Codacy blog on Scala Static Analysis tools

    【讨论】:

      【解决方案3】:

      Codacy开发了一个易于定制的工具——scala-meta:https://github.com/codacy/codacy-scalameta

      看看

      我认为find-sec-bugs 对 scala 有一些支持

      【讨论】:

      • 不是 findbugs,只有 find-sec-bugs。 scalacheck 是一个单元测试框架。
      【解决方案4】:

      wartremover 会被视为替代品吗?此外,scalac 的-Xlint-Ywarn-adapted-args 命令行参数可能有助于捕捉某些类型的错误。

      【讨论】:

        【解决方案5】:

        您为什么不喜欢使用功能非常强大的 Scalac 编译器?例如。它有一些有用的选项,例如

        • -未选中
        • -弃用
        • -功能

        ...等等。

        【讨论】:

        • 问题是编译器是否给出了所有的建议。例如,javac 并不总是建议 Eclipse 和 IntelliJ 静态分析器建议的所有“lint”类型的东西。如果编译器建议一切,就不需要说 Findbugs 或 PMD。我会假设在 Scala 世界中,情况是相同的——即编译器不会检查所有代码异味,例如复制粘贴(非 DRY)代码或任何可能的代码。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多