visual-studio - 代码量统计 - 有效代码行数




你如何计算Visual Studio解决方案中的代码行? (17)

VS2005,2003和2002的开源线计数器可在此处获得:

http://www.wndtabs.com/

在这里,还讨论了创建一个计数VS插件的行,并在Codeproject上完成代码

http://www.codeproject.com/KB/macros/LineCounterAddin.aspx

此外,Slick Edit Gadgets还有一个不错的在线计数器:

http://www.slickedit.com/products/slickedit

和Microsoft Visual Studio Team System 2008包含一个很好的在线计数器。

但请记住:

通过代码行来测量编程进度就像衡量飞机建筑进度的重量。 比尔盖茨

是否有可能在整个解决方案中找到代码行数? 我听说过MZ-Tools ,但有没有相当于开源的东西?


Visual Studio 2010 Ultimate拥有这种内置功能。

分析 - >计算代码度量


一个简单的解决方案是搜索所有文件。 使用通配符时输入“*”。 这将匹配所有线路。 在查找结果窗口的末尾,您应该看到一行:

Matching lines: 563 Matching files: 17 Total files searched: 17

当然,这对于大型项目来说并不是很好,因为所有行都被修改并加载到内存中,以便在查找结果窗口显示出来。

参考:


以下是Visual Studio 2012/2013/2015的更新,适用于想要执行“查找”选项(我认为最简单)的用户:此RegEx将查找所有非空白行,并提供多个排除项,以提供最准确的结果。

在“查找”框中输入以下RegEx。 请确保选择“使用正则表达式”选项。 根据您的需要将搜索选项更改为“当前项目”或“整个解决方案”。 现在选择“查找全部”。 在查找结果窗口的底部,您会看到“匹配行”,即代码行数。

^(?!(\s*\*))(?!(\s*\-\-\>))(?!(\s*\<\!\-\-))(?!(\s*\n))(?!(\s*\*\/))(?!(\s*\/\*))(?!(\s*\/\/\/))(?!(\s*\/\/))(?!(\s*\}))(?!(\s*\{))(?!(\s(using))).*$

此RegEx排除以下项目:

注释

// This is a comment

多行注释(假设每行前面的行都正确注释了*)

/* I am a
* multi-line
* comment */

用于Intellisense的XML

/// <summary>
/// I'm a class description for Intellisense
/// </summary>

HTML评论:

<!-- I am a HTML Comment -->

使用语句:

using System;
using System.Web;

打开大括号:

{

关闭大括号:

}

注:大括号之间的任何内容都将包含在搜索中,但在本示例中,只有4行代码会被计数,而不是18个实际的非空行:

        public class Test
        {
            /// <summary>
            /// Do Stuff
            /// </summary>
            public Test()
            {
                TestMe();
            }
            public void TestMe()
            {
                //Do Stuff Here
                /* And
                 * Do
                 * Stuff
                 * Here */
            }
        }

我创造了这个,给了我一个更准确的LOC计数比以前的选择,并认为我会分享。 老板们很喜欢LOC的数量,所以我坚持了一段时间。 我希望别人能找到这个帮助,让我知道如果你有任何问题或需要帮助得到它的工作。



使用菜单 - >分析 - >计算Visual Studio 2010 Ultimate中的代码度量选项。



在Visual Studio 2015中,转到分析菜单并选择“计算代码度量标准”。


对于未来的读者,我想建议Visual Studio 2010DPack扩展

它有一个内置的实用程序负载,包括一个行计数器,说明有多少行是空白的,代码等。





我发现powershell对此很有用。 我认为无论如何,LoC都是一个非常虚伪的指标,所以我不相信任何更正式的东西都是必需的。

从一个小小的解决方案目录中:

PS C:\Path> (gci -include *.cs,*.xaml -recurse | select-string .).Count
8396
PS C:\Path>

这将计算所有解决方案的.cs和.xaml文件中的非空行。 对于一个更大的项目,我只是使用了一个不同的扩展列表:

PS C:\Other> (gci -include *.cs,*.cpp,*.h,*.idl,*.asmx -recurse | select-string .).Count
909402
PS C:\Other>

为什么在单个命令行中使用整个应用程序会这样做? :)


我想出了一个快速和肮脏的PowerShell脚本来计算文件夹结构中的行数。 它不像其他一些其他工具或解决方案中引用的其他工具的功能一样全面,但我认为可以粗略比较一个项目或解决方案中代码文件相对于另一个的大小。

脚本可以在这里找到:

https://gist.github.com/1674457



正则表达式在VS2010和2012之间发生了变化,因此这里的大多数正则表达式解决方案不再有效

(^(?!(\s*//.+)))+(^(?!(#.+)))+(^(?!(\s*\{.+)))+(^(?!(\s*\}.+)))+(^(?!(\s*\r?$)))+

将找到所有不是空白的行,不仅仅是一个括号('{'或'}'),而不仅仅是一个#include或其他预处理器。

使用Ctrl - shift - f并确保启用正则表达式。

VS 2010和更老版本的相应正则表达式是

^~(:[email protected]//.+)~(:[email protected]\{:[email protected])~(:[email protected]\}:[email protected])~(:[email protected]/#).+

这里的答案有点过时了,可能是从2008年的时候开始的。 因为在较新的Visual Studio版本2010/2012中,此功能已经内置。 因此没有理由使用任何扩展或工具。

计算代码行的功能 - 计算指标。 有了它,您可以计算每个项目或解决方案的指标(LOC,Maintaince指数,Cyclomatic指数,继承深度)。

只需在Solution Explorer中右键单击解决方案或项目,

并选择“计算指标”

后来的分析和汇总数据可以导入到Excel中。 同样在Excel中,您可以过滤出生成的类或其他指标中的噪音。 这些指标包括代码行LOC可以在构建过程中收集,并包含在构建报告中







line-count