我需要对.net程序集(c#)的代码行(无空白,无注释)进行(非常粗略的)估计。有什么简单的方法可以用反射来完成这个任务吗?
我想要一个手写的工具(所以我在这里询问指针.)但我也会用一个自由的(如言论)工具来解决问题。
以下是我的用例:
我是一个团队的一员,在一个规模不大的项目上没有代码覆盖。我们有一个关于覆盖范围的报告,说明了大约60%的渴望(在这里谈论单元测试。),但是,这个报告没有显示没有单元测试的程序集。
因此,为了使报告接近正确,我认为我编写了一个小工具,可以在没有单元测试的情况下调用每个程序集(我可以找到这些测试),并生成一个xml,就像我们的覆盖率工具所生成的那样,说明什么都不被覆盖。作为“语句”的第一个近似,我以为我数“代码行”。
发布于 2011-04-19 07:29:01
不能使用反射来计算代码行数。使用反射无法获得此信息。使用反射,您可以获得类成员的签名,也可以在这些方法中获取原始IL。然而,您无法有效地将IL转换回代码行。
有几种方法可以做到这一点。您可以(Ab)使用诸如Reflector之类的工具并以编程方式调用它的程序集,以便将程序集反编译回C#并进行一些行计数,或者可以从.pdb文件中获取信息以获取行号。那些程序数据库文件包含了所有这些信息。然而,没有使用反射读取pdbs的方法。
NDepend (提到的工具Gerrie )使用来自.pdb文件的信息来计数行数。
但是既然您已经在使用代码覆盖工具,为什么不为未发现的程序集添加空的单元测试项目,并将这些测试项目添加到代码覆盖率工具中。这样,您就可以看到整个项目的总覆盖范围。这将比购买NDepend便宜得多,也比自己手写LoC计数器便宜得多。
发布于 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
发布于 2011-04-19 07:16:25
不如使用像NDepend这样的工具,而不是自己编写所有东西呢?
https://stackoverflow.com/questions/5712839
复制相似问题