是否有任何工具可用于计算项目的代码指标(例如代码行数,圈复杂度,耦合度,内聚力),并且随着时间的推移产生一个显示趋势的图表?
答案 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,它可以处理:
在使用它的同时,我也没有错过您正在寻找的图形选项 我认为,如果你找不到任何可以随时间处理图形的插件/工具,你应该看看最适合你的工具,并为你提供所需的所有信息;即使给定的信息仅用于项目的当前构建。
作为旁注, 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是生成此类指标的简单工具。
(来源: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)
答案 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多个源代码指标,跟踪所有时间变化,并提供源代码可维护性的总体评级。