从 .NET 确定 C# 和 C++ 的 SLOC 和复杂性
题
几年来,我一直在我的项目中使用 SourceMonitor,以记录 C# 和 C++ 组件的源代码复杂性和基本 SLOC(包括注释)。这些用于向我们的客户进行外部报告,因此我无法争论它们的优点或缺点。
我一直在开发一个存储库分析工具,它能够在任何日期/时间为我提供项目的快照视图。我要添加的下一阶段是缓存指定文件和修订的指标。
我知道 SourceMonitor 可以通过编写脚本来允许我提供要测试的文件并从结果文件 CSV 或 XML 中获取指标。
.NET 中是否有一个本机库可以用来做同样的事情——例如避免产生外部进程并解析结果。
我只需要以下指标:
- SLOC
- 注释行数
- 最复杂方法的复杂度
- 最复杂方法的名称
我需要运行这个 C# 代码和正常 C++ 代码。
编辑:由于我已经拥有提供所需 GUI 和报告的工具,因此需要使用库/API 编写或生成指标,无需手动步骤。理想情况下,我想获取指定文件/修订版(而不是整个项目)的指标,我的实用程序将自动从版本控制中拖动这些指标。
笔记:我为此创建了一个赏金,当它过期时我正在度假......NDepends 的答案并不令我满意,因为它不查看源代码,而是查看程序集本身!
解决方案 5
虽然我从未找到过可以同等解析 C# 和 C++ 的 .NET 产品,但我确实找到了一个易于使用的产品, 代码计数 支持这些语言以及更多语言。
它有一个简单的命令行,与我的项目中使用的 SourceMonitor 不同,直到 CODECOUNT 取代它。
其他提示
您可以在此处找到 C# SLOC 的开源代码和注释: http://code.google.com/p/projectpilot/source/browse/#svn/trunk/ProjectPilot.Framework/Metrics
用于计算 SLOC 的可靠的基于命令行的工具是 克洛克. 。它支持多种语言,包括 C# 和 C++。支持的输出格式为 xml、csv 和 sql。
这不会给你带来功能复杂性,而且它不可编写脚本(据我所知),但是 VS 的 SlickEdit Gadgets 有一个很棒的 SLOC 报告工具,你可以从解决方案资源管理器中使用,并会在文件中为你提供详细的报告,项目或解决方案级别。
你可以在这里得到它: http://www.slickedit.com/content/view/441