什么影响了 Sonarqube 的可维护性结果?

What influence the maintainability result for Sonarqube?

我面临着巨大的"spaghetti code",已知缺乏文档、缺乏测试覆盖、高复杂度、缺乏可遵循的设计规则等。我让代码默认分析声纳扫描,令我惊讶的是,可维护性得分非常高,技术债务为 1.1%!现实表明,几乎每次更改都会引入新的错误

我很困惑,想知道实现中的一些特殊性是否可以解释这个分数...例如我们有相当多的接口(感觉1个实现有4-5个接口),使用反射和服务定位器模式。

是否有其他指标可供我使用,最终与提高质量更相关?

可维护性评级是解决代码库中所有 Code Smell 类型问题的估计时间与在当前状态下编写代码的估计时间的乘积。

您还应该查看代码库中的错误和漏洞。

关于您的具体观点(假设我们正在谈论 Java):

  • 已知缺少文档 - 默认配置文件中有一条规则查找 Java文档。您可以阅读它的描述和参数值,看看它做了什么和没有找到。
  • 缺乏测试覆盖率-目前在这个检测中有一个"hole";如果 没有 覆盖 class,则在计算 could/should 被覆盖的行时不会考虑 class,因此当计算覆盖百分比。它应该是固定的 "soon"。第一步将出现在 6.2 的平台端,但需要对语言插件进行相应更改才能生效。
  • 高复杂性 - 这是有规则的。如果他们没有找到您认为他们应该找到的东西,请查看他们的(可调整的)阈值。
  • 缺乏设计规则——唯一可能解决这个问题的规则(架构约束)是
    1. 已弃用
    2. 计划删除
    3. 默认不启用 从最新版本的插件中删除
  • 反射的使用 - 当前没有可用于检测此的规则