计算代码指标
是否有可用的工具来为项目计算代码量度(例如,代码行数,圈复杂度,耦合,内聚性),并随时间产生显示趋势的图形?
解决方案
回答
.NET的NDepend
回答
在我的最新项目中,我使用了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
回答
如果我们在.NET领域,Developer Express的CodeRush可实时提供LOC,循环复杂性和(相当出色的IMHO)维护复杂性分析。
(很抱歉,维护复杂性链接;它将进入Google的缓存。原始链接似乎是离线ATM)。
回答
我也在寻找用于我的IDE的代码度量工具/插件,但据我所知,没有(对于Eclipse)也没有显示指定时间段内的复杂性图表。
但是,我确实找到了Eclipse指标插件,它可以处理:
- 麦凯布的环复杂性
- 传出联轴器
- 方法缺乏凝聚力
- 方法中的代码行
- 场数
- 等级数
- 范围内的本地人数
- 参数数量
- 陈述数
- 每类的加权方法
在使用它时,我也不会错过我们正在寻找的图形选项。
我认为,如果我们找不到随时间推移可以处理图形的任何插件/工具,则应查看最适合我们并为我们提供所需全部信息的工具。即使给定的信息仅适用于项目的当前版本。
附带说明,eclipse指标插件允许我们将数据导出到外部文件(链接转到示例),因此,如果我们使用源代码管理工具,并且应该这样做,则始终可以导出特定数据构建文件并将其与源代码一起存储,这样我们仍然可以(一种基本的)方式来追溯时间并检查差异。
回答
对于Python,pylint可以提供一些代码质量指标。
回答
在PHP方面,我认为例如phpUnderControl包含通过phpUnit的指标(如果我没有记错的话)。
请记住,指标通常存在缺陷。例如,与解决复杂问题的编码器相比,从事琐碎问题的编码器将产生更多的代码,并且在那里看起来更好。
回答
如果我们使用的是.NET,则还有一个用于反射器的代码度量插件。
回答
如果我们正在进行一些趋势分析,那么除了SLOC之外,它真的意味着还有其他需要衡量的东西吗?
即使我们只是做一个用于尾随分号的grep并计算返回的行数,我们所追求的还是SLOC测量技术的一致性。这样,就可以将今天的测量结果与上个月的测量结果进行有意义的比较。
我真的看不出McCabe循环复杂性的趋势如何?我认为CC应该更多地用于质量快照,以向开发人员提供反馈。
编辑:哦。只是想到了其他一些可能有用的度量。注释占SLOC和测试覆盖率的百分比。我们都不希望滑倒。回到这两个方面,再也没有比在"当下的热潮中"做它们更像上帝了。
HTH。
干杯,
抢
回答
代码分析器是生成此类指标的简单工具。
替代文字http://www.codeanalyzer.teel.ws/docs/post-analysis-shot.png
回答
请记住,我们衡量的是我们得到的。 loc没有提及生产力或者效率。
通过代码行给程序员评分,我们将获得..代码行。
其他指标也使用相同的论点。
otoh .. http://www.crap4j.org/是一个非常保守和有用的指标。它设置了覆盖范围的复杂性。
回答
关于工具NDepend,它具有82种不同的代码度量标准,从代码行数到方法排名(受欢迎程度),循环复杂性,方法缺乏内聚性,覆盖率百分比(从NCover或者VSTS中提取),继承深度。 。
通过其规则系统,NDepend还可以查找问题并估算技术债务,这是一个有趣的代码度量标准(用于解决问题的开发工作量与每年用于解决问题的开发时间所花费的时间)。
所有这些指标都在这里详细说明。
回答
Scitools的Understand确实能够为我们生成许多代码指标。我在代码指标功能方面经验不足,但是静态分析功能总体来说不错,价格也很合理。支持非常好。
回答
Atlassian FishEye是另一个出色的工具。它与源代码控制系统集成(当前支持CVS,SVN和Perforce),并以此方式分析所有文件。但是,分析是相当基础的,产品本身是商业产品(但价格很合理,IMO)。
我们还可以为其获取一个名为Crucible的添加程序,以方便同行代码审阅。
回答
NDepend,我正为此目的使用它及其最佳功能。
检查一下:
http://www.codeproject.com/KB/dotnet/NDepend.aspx
回答
Sonar绝对是我们必须考虑的工具,尤其是对于Java项目。但是,它也可以处理PHP或者C / C ++,Flex和Cobol代码。
这是显示项目中一些指标的屏幕截图:
替代文字http://sonar.codehaus.org/wp-content/uploads/2009/05/squid-metrics.png
请注意,我们可以通过使用其演示站点(位于http://nemo.sonarsource.org)来试用该工具。
回答
对于Visual Studio .NET(至少是Cand VB.NET),我发现免费的StudioTools对于度量非常有用。它还添加了诸如ReSharper之类的商业工具中的许多功能。