从 .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++(未管理)

从 C# 启动 sqlcmd 时如何检索错误?

一个从C++初级到C#高级的面试历程

将 Suprema Biostar C++ 代码转换为 C#

你可以从 C++ 运行 C# 代码吗?

我的 C++ 程序集是如何从 C# 控制台应用程序而不是 ASP.NET 中看到的?