题
是否有任何工具可以计算项目的代码指标(例如代码行数、圈复杂度、耦合度、内聚度),并随着时间的推移生成显示趋势的图表?
解决方案
在我最新的项目中我使用了 源监视器. 。这是一个很好的免费代码指标分析工具。
以下是 SourceMonitor 官方网站的摘录:
- 通过源文件快速,单个传递收集指标。
- 用C ++,C,C#,VB.NET,Java,Delphi,Visual Basic(VB6)或HTML编写的源代码的度量。
- 包括C ++,C,C#,VB.NET,Java和Delphi的方法和功能级别的度量。
- 将指标保存在检查点中,以在软件开发项目中进行比较。
- 显示和打印表和图表中的指标。
- 使用XML命令文件在标准Windows GUI或脚本内部操作。
- 将指标导出到XML或CSV(逗号分隔值)文件,以便使用其他工具进行进一步处理。
对于 .NET 之外 依赖型 这是最好的工具,我可以推荐 维尔.
以下工具可以进行趋势分析:
其他提示
声纳 绝对是您必须考虑的工具,尤其是对于 Java 项目。然而,它也可以处理 PHP 或 C/C++、Flex 和 Cobol 代码。
这是显示项目一些指标的屏幕截图:
替代文本http://sonar.codehaus.org/wp-content/uploads/2009/05/squid-metrics.png
请注意,您可以使用他们的演示站点来尝试该工具: http://nemo.sonarsource.org
依赖型 对于.net
我也在为我的 IDE 寻找一个代码度量工具/插件,但据我所知,没有一个(对于 Eclipse)也可以显示指定时间段内的复杂性图表。然而,我确实找到了 Eclipse 指标插件, ,它可以处理:
- 麦凯布的圈复杂度
- 传出耦合
- 方法缺乏凝聚力
- 方法中的代码行数
- 字段数量
- 级别数
- 范围内的当地人数量
- 参数数量
- 报表数量
- 每个类的加权方法
在使用它时,我也没有错过您正在寻找的绘图选项。
我认为,如果您找不到任何可以处理随时间变化的图形的插件/工具,您应该寻找最适合您并为您提供所需的所有信息的工具;即使给定的信息仅适用于项目的当前版本。
作为旁注, Eclipse 指标插件 允许您 将数据导出到外部文件 (链接到一个示例),因此,如果您使用源代码控制工具,您应该!您始终可以导出特定构建的数据并将文件与源代码一起存储,这样您仍然拥有(基本) 回到过去并检查差异的方法。
请记住,您衡量的就是您得到的。loc 没有提及生产力或效率。
通过代码行数来评价程序员,你会得到..代码行。同样的论点也适用于其他指标。
奥托.. http://www.crap4j.org/ 是一个非常保守且有用的指标。它设置了与覆盖范围相关的复杂性。
NDepend,我正在使用它并且它最好用于此目的。检查一下:http://www.codeproject.com/KB/dotnet/NDepend.aspx
Atlassian FishEye 是另一个出色的工具。它与您的源代码控制系统集成(当前支持 CVS、SVN 和 Perforce),并以这种方式分析您的所有文件。不过,分析相当基础,而且产品本身是商业化的(但在我看来,价格非常合理)。
您还可以获得一个名为 Crucible 的附加组件,它可以促进同行代码审查。
对于Python来说, 皮林特 可以提供一些代码质量指标。
如果您正在进行一些趋势分析,除了 SLOC 之外,这真的意味着有什么需要衡量的吗?
即使您只是对尾随分号执行 grep 并计算返回的行数,您所追求的是 SLOC 测量技术的一致性。这样,今天的测量结果可以与上个月的测量结果进行有意义的比较。
我真的看不出麦凯布循环复杂度的趋势会带来什么?我认为CC应该更多地用于质量快照,以便为开发人员提供反馈。
编辑:哦。只是想到了其他一些可能有用的测量方法。评论占 SLOC 和测试覆盖率的百分比。你不想让这两者溜走。回来改造其中任何一个都比“一时冲动”做它们更神圣!
HTH。
干杯,
抢
Scitools 的理解 确实有能力为您生成大量代码指标。我对代码指标功能没有太多经验,但静态分析功能总的来说很好,而且价格也很合理。支持非常好。
项目代码表 提供差异开发历史报告(Excel 格式),其中显示 SLOC、时间和生产力百分比中的编码进度指标(其时间估计基于圈复杂度和其他指标)。然后在Excel中您可以轻松生成您想要的图表。
请参阅这篇文章,其中逐步描述了它:http://www.projectcodemeter.com/cost_estimation/help/FN_monsizing.htm
对于 Java,您可以尝试我们的工具, 质量门 它计算 60 多个源代码指标,跟踪一段时间内的所有更改,并提供源代码可维护性的总体评级。