首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用反射计算代码行数的简单方法

使用反射计算代码行数的简单方法
EN

Stack Overflow用户
提问于 2011-04-19 07:12:51
回答 5查看 3.2K关注 0票数 4

我需要对.net程序集(c#)的代码行(无空白,无注释)进行(非常粗略的)估计。有什么简单的方法可以用反射来完成这个任务吗?

我想要一个手写的工具(所以我在这里询问指针.)但我也会用一个自由的(如言论)工具来解决问题。

以下是我的用例:

我是一个团队的一员,在一个规模不大的项目上没有代码覆盖。我们有一个关于覆盖范围的报告,说明了大约60%的渴望(在这里谈论单元测试。),但是,这个报告没有显示没有单元测试的程序集。

因此,为了使报告接近正确,我认为我编写了一个小工具,可以在没有单元测试的情况下调用每个程序集(我可以找到这些测试),并生成一个xml,就像我们的覆盖率工具所生成的那样,说明什么都不被覆盖。作为“语句”的第一个近似,我以为我数“代码行”。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-04-19 07:29:01

不能使用反射来计算代码行数。使用反射无法获得此信息。使用反射,您可以获得类成员的签名,也可以在这些方法中获取原始IL。然而,您无法有效地将IL转换回代码行。

有几种方法可以做到这一点。您可以(Ab)使用诸如Reflector之类的工具并以编程方式调用它的程序集,以便将程序集反编译回C#并进行一些行计数,或者可以从.pdb文件中获取信息以获取行号。那些程序数据库文件包含了所有这些信息。然而,没有使用反射读取pdbs的方法。

NDepend (提到的工具Gerrie )使用来自.pdb文件的信息来计数行数。

但是既然您已经在使用代码覆盖工具,为什么不为未发现的程序集添加空的单元测试项目,并将这些测试项目添加到代码覆盖率工具中。这样,您就可以看到整个项目的总覆盖范围。这将比购买NDepend便宜得多,也比自己手写LoC计数器便宜得多。

票数 5
EN

Stack Overflow用户

发布于 2011-06-16 20:12:46

VS2010正在使用Metrics.exe (微软)。该工具计算已编译程序集中的代码行数。http://blogs.msdn.com/b/camerons/archive/2011/01/28/code-metrics-from-the-command-line.aspx

票数 4
EN

Stack Overflow用户

发布于 2011-04-19 07:16:25

不如使用像NDepend这样的工具,而不是自己编写所有东西呢?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5712839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档