计算代码度量

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

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

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

对于除了NDepend之外的 .NET,它只是最好的工具,我可以推荐vil 。

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

  • Klocwork Insight

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

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

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

请注意,您可以使用http://nemo.sonarsource.org上的演示网站来尝试该工具;

N依赖 .net

我也在为我的IDE寻找一个代码度量工具/插件,但据我所知还没有(对于日食),也显示了在指定的时间段内的复杂性的graphics。 但是,我find了eclipse的度量插件 ,它可以处理:

  • McCabe的旋回复杂性
  • 传出联轴器
  • 方法缺乏凝聚力
  • 方法中的代码行
  • 数量的字段
  • 级别的数量
  • 在范围内的当地人数量
  • 参数数量
  • 语句数量
  • 每类的加权方法

而使用它,我没有错过你正在寻找的graphics选项。
我认为,如果你没有find任何可以处理graphics的插件/工具,你应该看看最适合你的工具,并为你提供所有你需要的信息。 即使给定的信息仅用于当前项目的构build。

作为一个方面说明, 日食指标插件允许您将数据导出到外部文件 (链接转到示例),所以如果您使用源代码pipe理工具,并且您应该!,您始终可以导出数据与源代码一起构build和存储文件,这样您仍然有一个(基本的)方法可以及时回溯并检查差异。

请记住,你所衡量的是你所得到的。 禄没有提到生产力或效率。

通过代码行对程序员进行评价,你会得到..行代码。 其他指标也是一样的。

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

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

关于NDepend这个工具,它有82种不同的代码度量,从代码行数到方法级别(受欢迎程度),循环复杂度,缺less方法的凝聚力,百分比覆盖率(从NCover或VSTS中提取),inheritance深度。 。

通过它的规则系统,NDepend还可以find问题并估算技术债务 ,这是一个有趣的代码度量(解决问题的开发工作量每年被破坏的开发时间的数量以使问题不固定)。

所有这些指标都在这里详细介绍。

如果你在.NET空间,Developer Express的CodeRush实时提供LOC,Cyclomatic Complexity和(相当优秀的,恕我直言)的维护复杂性代码分析。

(对于“维护复杂性”链接,这是Google的caching,原文似乎是离线的ATM)。

Code Analyzer是生成这种度量的简单工具。

替代文字http://www.codeanalyzer.teel.ws/docs/post-analysis-shot.png

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

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

对于Visual Studio .NET(至lessC#和VB.NET),我发现免费的StudioTools对于指标非常有用。 它还增加了诸如ReSharper等商业工具中的许多function。

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

如果您使用的是.NET,还有一个用于reflection器的代码度量插件 。

我会推荐Visual Studio的代码度量查看器Exention 。

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

在这里阅读更多关于function

在PHP的前端,我相信例如phpUnderControl包含通过phpUnit (如果我没有错)的指标。

请记住,度量标准通常是有缺陷的。 举例来说,一个处理微不足道的问题的编码人员会产生更多的代码,而这些编码人员可以更好地处理graphics,而不是解决复杂问题的编码人员。

如果你经历了一些趋势分析,是否真的意味着超越SLOC来衡量?

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

我真的不知道McCabe Cyclometric Complexity会给出什么样的趋势? 我认为CC应该更多地用于质量快照以向开发者提供反馈。

编辑:哦。 只是想到了一些可能有用的其他测量。 评论占SLOC和testing覆盖率的百分比。 这两者你都不想放弃。 回想起来,这两者中的任何一个都不会像“在当下炎热的时候”那样做神。

HTH。

干杯,

Scitools的了解有能力为您生成大量的代码指标。 我没有很多代码度量function的经验,但静态分析function一般都不错,价格非常合理。 支持非常好。

项目代码表提供了一个差异化的开发历史报告(Excel格式),它以SLOC,时间和生产率百分比(它是基于圈复杂度和其他度量的时间估计)显示您的编码进度指标。 然后在Excel中,您可以轻松生成所需的graphics。

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

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