是否有任何工具可以计算项目的代码指标(例如代码行数、圈复杂度、耦合度、内聚度),并随着时间的推移生成显示趋势的图表?

有帮助吗?

解决方案

在我最新的项目中我使用了 源监视器. 。这是一个很好的免费代码指标分析工具。
以下是 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

关于工具 依赖型 它带有 82 种不同的代码度量,从代码行数到方法排名(受欢迎程度)、循环复杂度、方法缺乏内聚性、覆盖百分比(从 NCover 或 VSTS 中提取)、继承深度......

借助其规则系统,NDepend 还可以发现问题并进行评估 技术债务 这是一个有趣的代码指标(解决问题的开发工作量 每年为了解决问题而浪费的开发时间)。

所有这些指标都有详细说明 这里.

如果您在 .NET 领域,请使用 Developer Express” 代码冲刺 提供 LOC、环复杂度和(相当出色,恕我直言) 维护复杂性 实时分析代码。

(对维护复杂性链接感到抱歉;它会进入谷歌的缓存。原来好像是离线ATM)。

Atlassian FishEye 是另一个出色的工具。它与您的源代码控制系统集成(当前支持 CVS、SVN 和 Perforce),并以这种方式分析您的所有文件。不过,分析相当基础,而且产品本身是商业化的(但在我看来,价格非常合理)。

您还可以获得一个名为 Crucible 的附加组件,它可以促进同行代码审查。

对于 Visual Studio .NET(至少 C# 和 VB.NET),我找到了免费的 Studio工具 对于指标来说非常有用。它还添加了商业工具中的许多功能,例如 锐锐.

代码分析器 是生成此类指标的简单工具。

alt text
(来源: TEEL.WS)

对于Python来说, 皮林特 可以提供一些代码质量指标。

还有一个 代码指标插件 为了 反射器, ,如果您使用的是 .NET。

我会推荐 代码指标查看器扩展 对于视觉工作室。

立即分析解决方案非常容易,如果取得进展也可以进行比较;-)

阅读更多 这里 有关 特征

在 PHP 方面,我相信例如 php受控 包括通过以下指标 php单元 (如果我没有记错的话)。

请记住,指标通常是有缺陷的。例如,与解决复杂问题的编码员相比,处理琐碎问题的编码员会生成更多代码,并且在图表上看起来更好。

如果您正在进行一些趋势分析,除了 SLOC 之外,这真的意味着有什么需要衡量的吗?

即使您只是对尾随分号执行 grep 并计算返回的行数,您所追求的是 SLOC 测量技术的一致性。这样,今天的测量结果可以与上个月的测量结果进行有意义的比较。

我真的看不出麦凯布循环复杂度的趋势会带来什么?我认为CC应该更多地用于质量快照,以便为开发人员提供反馈。

编辑:哦。只是想到了其他一些可能有用的测量方法。评论占 SLOC 和测试覆盖率的百分比。你不想让这两者溜走。回来改造其中任何一个都比“一时冲动”做它们更神圣!

HTH。

干杯,

Scitools 的理解 确实有能力为您生成大量代码指标。我对代码指标功能没有太多经验,但静态分析功能总的来说很好,而且价格也很合理。支持非常好。

项目代码表 提供差异开发历史报告(Excel 格式),其中显示 SLOC、时间和生产力百分比中的编码进度指标(其时间估计基于圈复杂度和其他指标)。然后在Excel中您可以轻松生成您想要的图表。

请参阅这篇文章,其中逐步描述了它:http://www.projectcodemeter.com/cost_estimation/help/FN_monsizing.htm

对于 Java,您可以尝试我们的工具, 质量门 它计算 60 多个源代码指标,跟踪一段时间内的所有更改,并提供源代码可维护性的总体评级。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top