计算代码指标

Calculate code metrics

是否有可用的工具来为您的项目计算代码量度(例如,代码行数,圈复杂度,耦合,内聚性),并随时间生成显示趋势的图形?


在我的最新项目中,我使用了SourceMonitor。这是一个用于代码指标分析的不错的免费工具。
这是SourceMonitor官方网站的摘录:

  • Collects metrics in a fast, single
    pass through source files.
  • Measures metrics for source code
    written in C++, C, C#, VB.NET, Java,
    Delphi, Visual Basic (VB6) or HTML.
  • Includes method and function level
    metrics for C++, C, C#, VB.NET,
    Java, and Delphi.
  • Saves metrics in checkpoints for
    comparison during software
    development projects.
  • Displays and prints metrics in
    tables and charts.
  • Operates within a standard Windows
    GUI or inside your scripts using XML
    command files.
  • Exports metrics to XML or CSV
    (comma-separated-value) files for
    further processing with other tools.

对于仅是最佳工具NDepend之外的.NET,我可以推荐vil。

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

  • Klocwork Insight

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

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

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

请注意,您可以通过使用其演示站点http://nemo.sonarsource.org来试用该工具。


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

  • 麦凯布的环复杂性
  • 传出联轴器
  • 方法缺乏凝聚力
  • 方法中的代码行
  • 场数
  • 等级数
  • 范围内的本地人数
  • 参数数量
  • 陈述数
  • 每类加权方法

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

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


.NET的NDepend


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

通过代码行给程序员评分,您将获得..代码行。
其他指标也使用相同的论点。

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


NDepend,我正为此目的使用它及其最佳功能。
检查一下:
http://www.codeproject.com/KB/dotnet/NDepend.aspx


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

通过其规则系统,NDepend还可以发现问题并估算技术债务,这是一个有趣的代码度量标准(用于解决问题的开发工作量与每年用于解决问题的开发时间所花费的时间)。

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


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

您还可以为其获取一个名为Crucible的附加程序,以方便同行代码审查。


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


如果您在.NET领域,Developer Express的CodeRush可实时提供LOC,循环复杂度和(相当出色的IMHO)维护复杂度分析。

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


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

alt text
(来源:teel.ws)


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


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


我建议为Visual Studio使用Code Metrics Viewer Exention。

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

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


Scitools的Understand确实能够为您生成许多代码指标。我对代码指标功能没有很多经验,但是静态分析功能总体来说不错,价格也很合理。支持非常好。


对于Java,您可以尝试使用我们的工具QualityGate,该工具可以计算60多个源代码指标,跟踪整个时间的所有变化,还可以对源代码的可维护性进行总体评估。


如果您正在进行一些趋势分析,那么除了SLOC之外,它真的意味着还有其他需要衡量的东西吗?

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

我真的看不出McCabe循环复杂性的趋势如何?我认为CC应该更多地用于质量快照,以向开发人员提供反馈。

编辑:哦。只是想到了其他一些可能有用的度量。注释占SLOC和测试覆盖率的百分比。您都不希望滑倒。回到这两个方面,再没有比在"当下的热"中做它们更像上帝了。

HTH。

干杯,


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

请记住,指标通常存在缺陷。例如,与解决复杂问题的编码器相比,从事琐碎问题的编码器将产生更多的代码,并且在那里看起来更好。


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

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


推荐阅读

    linux命令行执行工具?

    linux命令行执行工具?,工具,系统,网络,分析,工作,服务,状态,信息,电脑,发行,s

    linux用计算器的命令?

    linux用计算器的命令?,代码,环境,情况,异常,工具,数据,位置,平台,精密,设计,

    开发linux命令工具?

    开发linux命令工具?,系统,工具,环境,状态,平台,设计,数据,电脑,中小企业,标

    linux的数学计算命令?

    linux的数学计算命令?,工作,系统,信息,地址,数字,目录,命令,百分比,情况,管

    linux命令行工具大全?

    linux命令行工具大全?,工作,系统,工具,地址,信息,命令,目录,基础,管理,文件,l

    linux命令创建项目组?

    linux命令创建项目组?,管理,密码,项目,命令,系统,位置,文件,用户组,用户,文

    linux命令联想工具?

    linux命令联想工具?,地址,工作,系统,工具,状态,标准,信息,命令,目录,左下角,L

    linux云计算查看命令?

    linux云计算查看命令?,系统,信息,地址,工作,命令,情况,标准,服务,软件,网络,l

    linux打开计算器命令?

    linux打开计算器命令?,密码,电脑,工作,设备,数字,系统,手机,指数,情况,服务,

    复制项目的linux命令?

    复制项目的linux命令?,系统,项目,文件,命令,目录,源文件,语法,选项,目标,功

    linux命令输出计算?

    linux命令输出计算?,标准,地址,工作,信息,系统,命令,软件,数据,文件,控制台,l

    linux命令项目部署?

    linux命令项目部署?,项目,服务,环境,软件,系统,代理,管理,统一,做好,业务,怎

    linux命令工具怎么用?

    linux命令工具怎么用?,地址,系统,工作,单位,工具,密码,服务,命令,处分,基础,

    linux部署项目的命令?

    linux部署项目的命令?,项目,系统,设备,环境,工作,基础,传播,信息,标准,代码,L

    linux项目常用命令?

    linux项目常用命令?,工作,地址,系统,信息,管理,项目,命令,目录,标准,网络,lin

    linux项目更新命令?

    linux项目更新命令?,系统,信息,网络,地址,网站,通信,管理,时间,项目,命令,lin

    启动项目命令linux?

    启动项目命令linux?,工作,经理,产品,技术,地址,数字,系统,项目,命令,信息,怎

    linux命令行截图工具?

    linux命令行截图工具?,工具,电脑,软件,系统,截图,网站,工作,环境,暂停,命令,L

    linux计算总数命令?

    linux计算总数命令?,系统,第一,情况,数据,信息,电脑,命令,百分比,单位,工作,l

    linux中计算器命令?

    linux中计算器命令?,地址,数据,位置,网络,设备,时间,环境,平台,软件,命令,说