【问题标题】:Calculating Design Violations Technical Debt with SonarQube使用 SonarQube 计算设计违规技术债务
【发布时间】:2014-02-20 11:39:42
【问题描述】:

我想知道是否可以使用最新版本的 Sonar 或通过某些插件计算架构违规(来自 java 项目)的技术债务,例如:“'X' 类应该在 com.domain .classes 包”或”类'X'必须扩展类'Y'”?或者“‘X’类必须有一个‘public static Y someAttribute’属性”?

如果没有插件,有如何开发插件来自动化这个?我已经阅读了 Java API、REST、如何开发插件的文档并尝试对其进行编码,但还没有找到方法。

【问题讨论】:

    标签: java standards-compliance sonarqube technical-debt


    【解决方案1】:

    可能的途径是使用PMD 代码检查器。您可以将自己的custom rules 添加到 PMD,Sonar 有一个PMD plugin


    但在这种情况下,Sonar 可以为我计算债务(通过 SQALE 或其他插件)吗?另一种情况,我如何计算债务?

    我认为您误解了“技术债务”一词。以下是维基百科的描述:

    技术债务(也称为设计债务[需要引用] 或代码债务)是一个新学的隐喻,指的是代码库中糟糕的软件架构和软件开发的最终后果。债务可以被认为是在一项特定工作被认为完成之前需要完成的工作。如果欠债不还,就会不断累积利息,以后很难实施变革。未解决的技术债务会增加软件熵。

    需要注意的关键是技术债务是一个隐喻

    因此,例如,PMD 可以告诉您您的代码违反了某些规则的次数,但它无法告诉您修复它们需要做多少工作,或者将来会因为您不这样做而产生多少额外工作不要现在修复它。

    基本上,您无法衡量技术债务,因为真正衡量技术债务需要知道未来会发生什么。另请阅读:https://softwareengineering.stackexchange.com/questions/167080/how-is-technical-debt-best-measured-what-metrics-are-most-useful

    【讨论】:

    • 非常感谢@stephenc 的快速回答!我还想问你一件事:我之前已经阅读过关于自定义 XPath 和 Java 规则的内容,而没有专门针对 PMD。但在这种情况下,Sonar 可以为我计算债务(通过 SQALE 或其他插件)吗?在另一种情况下,我如何计算债务?再次感谢!
    • 好的,我在我的项目中运行了 mvn sonar:sonar。发现了两个违反两个 PMD 规则的问题:“未使用的局部变量”和“未使用的修饰符”,每个问题都有 30 分钟的技术债务。谁决定了30分钟?在那种情况下,有人通过计算或确定时间知道会发生什么。我该怎么做呢?
    • @andreyestevao - 我不知道。坦率地说,我认为那些对技术债务的估计是无稽之谈。有人从空中提取的随机数。但如果你真的想知道他们是如何实现的……请阅读源代码。
    • 无论如何,感谢您的时间@stephenc。如果有人也能做出贡献,那就太好了。
    【解决方案2】:

    做到这一点的唯一方法是通过 Commercial SQALE 插件,手动插入扩展架构约束、XPath、PMD 和其他类似规则的修复成本。

    Sonarqube 答案:http://sonarqube.15.x6.nabble.com/Calculating-Design-Violations-Technical-Debt-with-SonarQube-td5022251.html

    【讨论】:

    • 感谢@stephenc 的 PMD 解释,它们是正确答案的一部分。
    猜你喜欢
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    • 2019-06-14
    • 2013-12-09
    • 1970-01-01
    相关资源
    最近更新 更多