从 .NET 确定 C# 和 C++ 的 SLOC 和复杂性
Posted
技术标签:
【中文标题】从 .NET 确定 C# 和 C++ 的 SLOC 和复杂性【英文标题】:Determine SLOC and complexity of C# and C++ from .NET 【发布时间】:2008-09-25 14:26:43 【问题描述】:几年来,我一直在我的项目中使用 SourceMonitor 来记录 C# 和 C++ 组件的源代码复杂性和基本 SLOC(包括 cmets)。这些用于向我们的客户进行外部报告,因此我无法争论它们的优点或不足。
我一直在开发一个存储库分析工具,它能够在任何日期/时间为我提供项目的快照视图。我要添加的下一个阶段是缓存指定文件和修订的指标。
我知道 SourceMonitor 可以编写脚本以允许我提供要测试的文件并从结果文件 CSV 或 XML 中获取指标。
.NET 中是否有一个本地库可以用来做同样的事情——例如避免产生外部进程并解析结果。
我只需要以下指标:
SLOC 注释行数 最复杂方法的复杂性 最复杂方法的名称我需要在 C# 代码和普通 C++ 代码上运行它。
编辑:由于我已经拥有提供所需 GUI 和报告的工具,因此需要使用库/API 编写或生成指标,无需手动步骤。理想情况下,我想获取指定文件/修订版(而不是整个项目)的指标,我的实用程序会自动从版本控制中拖动。
注意:我为此创建了一个赏金,并且在它到期时正在度假...... NDepends 的答案并不让我满意,因为它不查看源代码,而是查看程序集本身!!!强>
【问题讨论】:
【参考方案1】:NDepend
【讨论】:
有 API 吗?它适用于单个源文件还是整个项目?考虑到我目前使用 SourceMonitor 进行此操作,对我的需求而言相当昂贵,并且做了很多我不需要的工作。 NDepend 检查程序集,而不是源代码。但它可以生成非常完整的报告,并具有许多用于获取和利用代码指标的很棒的功能。因此,我不知道有任何 NDepend API。【参考方案2】:您可以在此处找到 C# SLOC 和 cmets 的开源代码:http://code.google.com/p/projectpilot/source/browse/#svn/trunk/ProjectPilot.Framework/Metrics
【讨论】:
【参考方案3】:计算 SLOC 的可靠的基于命令行的工具是 Cloc。它支持多种语言,包括 C# 和 C++。支持的输出格式为 xml、csv 和 sql。
【讨论】:
【参考方案4】:这不会给您带来功能复杂性并且它不是可编写脚本的(据我所知),但适用于 VS 的 SlickEdit Gadgets 具有出色的 SLOC 报告工具,您可以从解决方案资源管理器中使用,并会在以下位置为您提供详细报告文件、项目或解决方案级别。
您可以在这里获取:http://www.slickedit.com/content/view/441
【讨论】:
【参考方案5】:虽然我从未找到可以同样解析 C# 和 C++ 的 .NET 产品,但我确实设法找到了一个易于使用的产品 CODECOUNT,它支持这些语言等等。
它有一个简单的命令行,不像我的项目中使用的 SourceMonitor,直到 CODECOUNT 替换它。
【讨论】:
以上是关于从 .NET 确定 C# 和 C++ 的 SLOC 和复杂性的主要内容,如果未能解决你的问题,请参考以下文章
将结构数组从 C#(.NET Core) 传递到 C++(未管理)