计算代码指标

时间:2008-09-13 07:53:06

标签: metrics

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

19 个答案:

答案 0 :(得分:66)

在我最近的项目中,我使用了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

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

答案 1 :(得分:12)

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

以下是显示项目某些指标的屏幕截图:

alt text http://sonar.codehaus.org/wp-content/uploads/2009/05/squid-metrics.png

请注意,您可以在http://nemo.sonarsource.org

使用他们的演示网站来试用该工具

答案 2 :(得分:8)

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

  • McCabe的Cyclomatic Complexity
  • Efferent Couplings
  • 方法缺乏凝聚力
  • 方法中的代码行
  • 字段数
  • 级别数
  • 范围内的当地人数
  • 参数数量
  • 报表数
  • 每班加权方法

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

作为旁注, eclipse metrics插件允许你export the data to an external file(链接转到一个例子),所以如果你使用源代码控制工具,你应该!,你可以随时导出特定构建的数据并将文件与源代码一起存储,这样您仍然可以(基本)方式回溯并检查差异。

答案 3 :(得分:8)

NDepend for .net

答案 4 :(得分:4)

请记住,你衡量的是你得到的。 loc对生产力或效率一无所知。

按行代码对程序员进行评分,你会得到......代码行。 其他指标也有同样的论点。

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

答案 5 :(得分:4)

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

答案 6 :(得分:3)

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

通过其规则系统,NDepend还可以查找问题和估算technical debt这是一个有趣的代码指标(修复问题的开发工作量 vs。 dev-time数量被破坏每年让问题不固定)。

所有这些指标均已详细here

答案 7 :(得分:2)

Code Analyzer是生成此类指标的简单工具。

alt text
(来源:teel.ws

答案 8 :(得分:2)

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

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

答案 9 :(得分:2)

如果你在.NET领域,Developer Express'CodeRush提供实时的LOC,Cyclomatic Complexity和(相当优秀的,恕我直言)Maintenance Complexity代码分析。

(很抱歉维护复杂性链接;它会转到Google的缓存。原来似乎是离线的ATM)。

答案 10 :(得分:2)

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

答案 11 :(得分:1)

如果您使用.NET,还有code metrics plugin reflector

答案 12 :(得分:1)

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

答案 13 :(得分:1)

我建议将Code Metrics Viewer Exention用于visual studio。

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

了解here

的更多features

答案 14 :(得分:0)

如果您正在进行一些趋势分析,它是否真的意味着要在SLOC之外进行衡量?

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

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

编辑:哦。只想到其他一些可能有用的测量。评论占SLOC和测试覆盖率的百分比。你不想放任何一个。回到改造其中任何一个都不像在“当下的热度中”那样做上帝!

HTH。

欢呼声,

罗布

答案 15 :(得分:0)

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

请注意,指标通常存在缺陷。例如,一个处理琐碎问题的程序员会产生更多的代码,并且在图表上看起来更好,而不是那些解决复杂问题的程序员。

答案 16 :(得分:0)

Scitools' Understand可以为您生成大量代码指标。我没有很多代码指标功能的经验,但静态分析功能一般很好,而且价格非常合理。支持非常好。

答案 17 :(得分:0)

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

请参阅此文章,逐步介绍它: http://www.projectcodemeter.com/cost_estimation/help/FN_monsizing.htm

答案 18 :(得分:0)

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

相关问题