【问题标题】:Is there a way to add additional code metrics in SonarQube without having to write my own plugin?有没有办法在 SonarQube 中添加额外的代码指标而无需编写我自己的插件?
【发布时间】:2015-12-04 23:28:37
【问题描述】:

我想开始跟踪我团队代码库中的代码指标。我们决定主要关注的五个指标是对象之间的耦合、Halstead 努力、方法缺乏内聚力、加权方法复杂性和类响应。有很多工具可以一次性通过我们的代码测量这些指标,但我想跟踪它。一位同事提到了 Sonar(现在显然称为 SonarQube)。

我设置了一个实例,它看起来具有我需要的时间线支持,但除了代码复杂性和代码覆盖率之外,它缺乏任何好的代码指标。大量搜索结果告诉我诸如缺乏方法凝聚力实际上是如何出现在其中但被弃用和删除的。无论是官方支持还是通过社区插件,我都需要这些指标,但我还没有找到添加它们的非弃用指标。

存在手动指标,但我们有数百个课程,我不想每周都对每个课程进行手动测量。这将成为一份全职工作。我宁愿避免编写自己的插件。如果我走那条路,我还不如写一个每周运行一次的 cron 作业来获取最新的,使用本地工具(当前使用 MetricsReloaded)获取我需要的分析,然后将本地分析转储到本地数据库中我以后可以用它做任何事情。这些方法似乎很糟糕,必须存在更好的方法,对吧?

如何让 SonarQube 跟踪这些指标?

【问题讨论】:

    标签: java sonarqube metrics


    【解决方案1】:

    如果我理解正确,您想在 SonarQube 中导入工具的结果,以随时间跟踪某些指标。

    在我看来,最好的做法是编写一个插件,而不是计算指标,而是导入您的工具生成的报告。这可能是最好的可重用选项,您不必重新发明轮子并从 SonarQube 功能中受益。 这就是通常编写覆盖插件的方式(对于 java)。您可以查看 Cobertura 或 Clover 插件,甚至是 Generic Coverage 插件,了解 SonarSource 我们是如何编写此类插件的。

    【讨论】:

      【解决方案2】:

      您似乎没有为您的用例使用正确的工具。声纳并不意味着增量工作。 Teamscale 正是您要找的。它是一种增量分析工具,可随时间跟踪指标和质量缺陷。 你可以

      • 从各种内置指标和分析中进行选择
      • 为 Teamscale 或
      • 实施您自己的自定义检查
      • 从外部工具自动上传指标和调查结果。就像任何其他发现一样,Teamscale 也会随着时间的推移跟踪这些。

      我认为第三个选项是您的用例所需要的。

      附注:如果您真的想提高代码质量,您可能需要重新考虑您对指标的选择。您应该阅读以下blog post,它解释了为什么 McCabe 是一个糟糕的选择。您提到的指标也适用相同的论点。

      【讨论】:

      • 我认为 Sonar 仅存储过去的快照,而无法稍后检查导致指标更改的代码更改。但也许我们这里有不同的增量概念。
      【解决方案3】:

      让我们试试SourceMeter - 一个源代码分析工具。 它有很多源代码指标。 SonarQube 还有一个插件。

      【讨论】:

      • 虽然这个答案很有用,但 SO 需要更多信息,而不仅仅是一个链接。作为答案。
      猜你喜欢
      • 2017-04-20
      • 2015-06-27
      • 1970-01-01
      • 2014-04-22
      • 1970-01-01
      • 2020-08-31
      • 1970-01-01
      • 1970-01-01
      • 2019-09-26
      相关资源
      最近更新 更多