我能否动态计算技术债务?

10

我有一大堆不相关的Java程序保存在“Programs”文件夹中,我真的很想能够自动地为每个单独的程序计算技术债务分数。我知道SonarQube可以通过Sonar-Runner帮你做到这一点(有点类似),但是我真的想找到一种动态地执行此操作的方法,以便我能够编写脚本来分析并将“Programs”文件夹中所有程序的技术债务分数写入csv文件中。

如果有其他可以为我完成此操作的技术债务软件(或质量软件),我非常乐意尝试。我只是希望您能提出任何建议或想法,甚至是否可能实现这一点?


它们是否都使用相同的项目结构?比如它们是否都使用Maven及其相关约定?如果不是,那么几乎不可能有一个工具来动态检测源代码文件夹、单元测试文件夹、要使用哪个Java编译器版本等等。 - NickDK
这是一个非常有趣的问题,我不禁想知道自动TD估计误差的下限是否如此之高,以至于有意义的结果难以捉摸。 - Bradley Thomas
3个回答

4

您可以使用Sonar,它是一个代码分析工具,还有插件可以估算技术债务的人时或美元。非常容易设置和运行,您只需下载它,提取并启动(带有内部数据库,因此不需要额外的依赖项或配置)。然后,如果您使用maven,只需将以下内容添加到您的pom.xml文件中:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <version>2.0</version>
</plugin>

并运行:

maven sonar:sonar

Sonar将向您展示有关代码的各种有用信息,包括技术债务。
------ 更新1 ------
如果您有多个项目(假设它们是maven),您可以将它们全部设置为一个父项目的子项,并在父项目上运行mvn sonar:sonar,它将为您分析所有子项目。 这里是多个项目的示例

这个例子现在被Sonar的“付费墙”阻挡了 :( - Joze

0
Eclipse Metrics插件可能会让你接近你所寻找的东西。它将通过报告不同类型的复杂性(耦合、圆形复杂度、内聚性、方法长度等)为您的项目提供健康检查。
从他们的页面上可以看到:
这个Eclipse插件在构建周期中计算代码的各种指标,并通过“问题”视图警告您每个指标的“范围违规”。这使您能够持续了解代码库的健康状况。您还可以将指标导出为HTML以进行公开显示,或将其导出为CSV或XML格式以进行进一步分析。此导出可以从Eclipse内部执行,也可以使用Ant任务执行。

http://eclipse-metrics.sourceforge.net/


0

这些答案都很好,但不完全是我想要的。我能够创建自己的解决方案:

  1. 当我创建Java项目时,我有一个Java类,它会自动为每个单独的项目编写sonar-properties.properties文件。

  2. 然后我启动Sonar服务器(通过命令提示符)

  3. 然后我编写了一个脚本,遍历目录查找sonar-properties.properties文件。当找到一个时,它就会启动sonar-runner。

请注意,属性文件具有与项目对应的项目密钥(因此我正在尝试分析的每个项目都有自己的项目密钥),因此我只需转到localhost并查看我创建的每个属性文件的链接即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接