87

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

4

19 回答 19

67

在我的最新项目中,我使用了 SourceMonitor。这是一个很好的免费代码度量分析工具。
以下是 SourceMonitor 官方网站的摘录:

  • 通过源文件快速收集指标。
  • 衡量用 C++、C、C#、VB.NET、Java、Delphi、Visual Basic (VB6) 或 HTML 编写的源代码的指标。
  • 包括 C++、C、C#、VB.NET、Java 和 Delphi 的方法和函数级别指标。
  • 将指标保存在检查点中,以便在软件开发项目期间进行比较。
  • 在表格和图表中显示和打印指标。
  • 在标准 Windows GUI 内或使用 XML 命令文件的脚本内操作。
  • 将指标导出到 XML 或 CSV(逗号分隔值)文件,以便使用其他工具进行进一步处理。

对于NDepend旁边的 .NET,这是最好的工具,我可以推荐vil

以下工具可以进行趋势分析:

于 2008-09-13T08:01:47.190 回答
12

Sonar绝对是您必须考虑的工具,尤其是对于 Java 项目。然而,它也可以处理 PHP 或 C/C++、Flex 和 Cobol 代码。

这是一个屏幕截图,显示了项目的一些指标:

替代文字 http://sonar.codehaus.org/wp-content/uploads/2009/05/squid-metrics.png

请注意,您可以使用他们的演示站点http://nemo.sonarsource.org来试用该工具

于 2010-01-26T22:12:21.540 回答
8

NDepend for .net

于 2008-09-13T07:54:10.860 回答
8

我还在为我的 IDE 寻找代码指标工具/插件,但据我所知,没有(对于 eclipse 而言)也显示指定时间段内的复杂性图表。但是,我确实找到了eclipse metrics 插件,它可以处理:

  • McCabe 的圈复杂度
  • 传出耦合
  • 方法缺乏凝聚力
  • 方法中的代码行
  • 字段数
  • 层数
  • 范围内的当地人数量
  • 参数数量
  • 语句数
  • 每类加权方法

在使用它时,我也没有错过您正在寻找的图形选项。
我认为,如果您找不到任何可以处理随时间变化的图表的插件/工具,您应该查看最适合您并为您提供所需信息的工具;即使给定的信息仅适用于您项目的当前版本。

附带说明一下,eclipse 指标插件允许您将数据导出到外部文件(链接到一个示例),因此如果您使用源代码控制工具,并且您应该这样做!,您始终可以导出特定的数据将文件与源代码一起构建和存储,这样您仍然有一种(基本)方法可以及时返回并检查差异。

于 2008-09-13T08:26:36.100 回答
4

请记住,您所测量的就是您所得到的。loc 没有提及生产力或效率。

通过代码行对程序员进行评分,您将获得..代码行。同样的论点也适用于其他指标。

otoh .. http://www.crap4j.org/是一个非常保守和有用的指标。它设置了与覆盖范围相关的复杂性。

于 2008-09-19T20:31:32.320 回答
4

NDepend,我正在使用它并且它最好用于此目的。检查这个: http: //www.codeproject.com/KB/dotnet/NDepend.aspx

于 2010-01-26T22:01:37.000 回答
3

关于工具NDepend,它带有 82 种不同的代码度量,从代码行数到方法排名(流行度)、循环复杂性、方法缺乏凝聚力、覆盖率百分比(从 NCover 或 VSTS 中提取)、继承深度.. .

借助其规则系统,NDepend 还可以发现问题并估计技术债务,这是一个有趣的代码指标(解决问题的开发努力量每年为了让问题未解决而被破坏的开发时间量)。

所有这些指标都在这里详述

于 2008-10-26T18:44:36.967 回答
2

如果您在 .NET 领域,Developer Express 的CodeRush可实时提供代码的LOC、圈复杂性和(相当出色,恕我直言)维护复杂性分析。

(抱歉,维护复杂性链接;它将进入 Google 的缓存。原来的似乎是离线 ATM)。

于 2008-09-13T08:07:55.223 回答
2

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

替代文字
(来源:teel.ws

于 2008-09-19T07:09:37.467 回答
2

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

您还可以为其添加一个名为 Crucible 的插件,以促进同行代码审查。

于 2008-10-26T18:56:07.350 回答
2

对于 Visual Studio .NET(至少是 C# 和 VB.NET),我发现免费的StudioTools对于度量非常有用。它还添加了ReSharper等商业工具中的许多功能。

于 2010-02-15T00:36:34.553 回答
1

对于 Python,pylint可以提供一些代码质量指标。

于 2008-09-13T08:30:16.903 回答
1

如果您使用的是 .NET,还有一个用于reflector的代码指标插件。

于 2008-09-13T10:05:21.307 回答
1

我会推荐Visual Studio 的代码指标查看器扩展。

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

在此处阅读有关功能的更多信息

于 2012-08-28T11:13:58.353 回答
0

在 PHP 方面,我相信例如phpUnderControl包括通过phpUnit的指标(如果我没记错的话)。

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

于 2008-09-13T09:15:08.777 回答
0

如果您在进行一些趋势分析,那么它真的意味着除了 SLOC 之外的任何衡量标准吗?

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

我真的看不出 McCabe Cyclometric Complexity 的趋势会带来什么?我认为 CC 应该更多地用于质量快照,以便向开发人员提供反馈。

编辑:哦。只是想到了一些其他可能有用的测量方法。注释占 SLOC 和测试覆盖率的百分比。这两个你都不想放过。回来改造其中任何一个都不是“一时兴起”那样做它们的神!

HTH。

干杯,

于 2008-09-13T10:40:44.203 回答
0

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

于 2008-10-26T18:50:20.077 回答
0

Project Code Meter提供差异化​​开发历史报告(Excel 格式),以 SLOC、时间和生产力百分比显示您的编码进度指标(它的时间估计基于圈复杂度和其他指标)。然后在 Excel 中,您可以轻松生成所需的图形。

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

于 2011-07-19T13:34:45.697 回答
0

对于 Java,您可以尝试我们的工具QualityGate,它可以计算 60 多个源代码指标,跟踪所有变化,并为源代码的可维护性提供总体评级。

于 2014-05-03T13:53:58.043 回答