Java 有没有一种方法可以在SonarQube中添加额外的代码度量,而不必编写自己的插件?

Java 有没有一种方法可以在SonarQube中添加额外的代码度量,而不必编写自己的插件?,java,sonarqube,metrics,Java,Sonarqube,Metrics,我想开始跟踪团队代码库中的代码度量。我们决定,我们主要关注的五个指标是对象、Halstead努力、方法缺乏内聚性、加权方法复杂性和类响应之间的耦合。有很多工具可以一次性测量代码中的这些指标,但我想跟踪它。一位同事提到了声纳(现在显然被称为SonarQube) 我设置了一个实例,它看起来像有我需要的时间线支持,但是除了代码复杂性和代码覆盖率之外,它缺少任何好的代码度量。大量的搜索结果告诉我一些事情,比如方法的内聚性在过去是如何的缺乏,但后来被弃用和删除了。我需要这些指标,不管它们是官方支持的还是通

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

我设置了一个实例,它看起来像有我需要的时间线支持,但是除了代码复杂性和代码覆盖率之外,它缺少任何好的代码度量。大量的搜索结果告诉我一些事情,比如方法的内聚性在过去是如何的缺乏,但后来被弃用和删除了。我需要这些指标,不管它们是官方支持的还是通过社区插件支持的,但我还没有找到一个非弃用的指标来添加它们

手动度量是存在的,但是我们有数百个类,我不想每周都对每个类进行手动度量。这将成为一份全职工作。我宁愿避免写我自己的插件。如果我这样做的话,我还不如编写一个cron作业,每周运行一次,以获取最新的数据,使用本地工具(当前使用MetricsReloated)获取所需的分析,然后将本地分析转储到本地数据库中,以便以后可以对其执行任何操作。这些方法似乎很糟糕,必须存在更好的方法,对吗


如何让SonarQube跟踪这些指标?

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

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

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

  • 从各种内置指标和分析中选择
  • 对Teamscale或
  • 自动从外部工具上载度量和结果。Teamscale也会像其他任何发现一样,随着时间的推移跟踪这些发现
我认为第三个选项是您的用例所需要的

请注意:如果您真的想提高代码的质量,您可能需要重新考虑您对度量标准的选择。你应该阅读下面的内容,这解释了为什么McCabe是一个糟糕的选择。同样的参数适用于您提到的指标。

让我们试试-一个源代码分析器工具。 它有很多源代码度量。
SonarQube还有一个插件。

我以为Sonar只存储过去的快照,而不可能在以后检查导致度量值更改的代码更改。但我们可能对增量有不同的概念。虽然这个答案很有用,但需要更多的信息,而不仅仅是一个链接。作为回答。