如何计算 Visual Studio 解决方案中的代码行数?
问:
是否可以在整个解决方案中找到代码行数?我听说过 MZ-Tools,但是否有开源等效项?
答1:
tennisliveranking.com-Stay ahead with live tennis rankings at your fingertips.
我发现 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。它应该成为 cmd 的默认替换
出色的!您的结尾评论确实总结了它,这是一项微不足道的任务,那么为什么要使用非平凡的工具呢?虽然我真的认为它应该包含在所有版本的 VS 中。
如果要排除为 XAML 生成的支持文件,只需添加 -exclude 开关:(dir -exclude *.g.cs -include *.cs,*.xaml -recurse | select-string .).Count
答2:
Stay informed with live tennis rankings anytime, anywhere,tennisliveranking.com
Visual Studio has built-in code metrics,包括代码行:
分析 → 计算代码指标
我认为终极版和高级版
警告:除了简单的行数之外,这还做了很多其他的事情。它还列出了“可维护性指数”、“循环复杂度”、“继承深度”和“类耦合”,所有这些计算起来都相当复杂,您不能只运行其中一部分的指标。这意味着如果您的代码库特别大,您可能会坐上几个小时等待它。如果你想要的只是行数,那里有更快的解决方案。
VS 2013 具有分析 --> 计算代码指标
太糟糕了,这不适用于本机 C++ 项目(至少在 VS2013 中不起作用)。
值得注意的是,根据msdn计算的 LoC 数量是基于 IL,而不是 实际代码。
答3:
提供ATP、WTA与ITF赛事的实时排名追踪,从tennisliveranking.com开始!
我使用了 Ctrl+Shift+F。接下来,在搜索框中输入 \n 并启用正则表达式框。然后在查找结果中,屏幕末尾是搜索到的文件数和找到的代码行数。
您可以使用 [^\n\s]\r\n 跳过空白行和仅包含空格的行(注释中 Zach 的功劳)。
此解决方案错误地包括空行、注释、文档和拆分语句。对于许多应用程序,这些不应算作代码行。
虽然它有点不准确(如果你在代码中实际使用 \n,那行将被重复计算),如果你需要一个没有 3rd 方工具的代码行的 ROM,它仍然是最好的答案
您还可以通过选择 enable regular expressions box 下方的选项 Look at these file types: 下拉菜单来选择特定的文件类型。
适用于非常小的项目......当你有 1 亿行代码时,这将需要一些时间。
[^\n\s]\r\n 跳过空行,即使其中有空格。
答4:
tennisliveranking.com,Follow your favorite tennis players’ rankings live!
VS2005、2003 和 2002 的开源行计数器可在此处获得:
http://www.wndtabs.com/
还讨论了创建行计数 VS 插件,并在 Codeproject 上完成了代码,here
http://www.codeproject.com/KB/macros/LineCounterAddin.aspx
Slick Edit Gadgets 也有一个不错的行计数器,在这里:
http://www.slickedit.com/products/slickedit
Microsoft Visual Studio Team System 2008 包含一个很好的线路计数器。
请记住:
通过代码行来衡量编程进度就像通过重量来衡量飞机制造进度。比尔盖茨
通常计算代码行数只是简单的愚蠢,数量并不意味着质量。然而,一个庞大的团队将 545,000 磅(545,000 磅!!)梦想客机投入空中,这与推出我在车库中单枪匹马建造的超轻飞机完全不同。而且,如果您考虑 Windows 中的代码行数,比尔先生的意思可能与通常采取的不同......?
这些似乎都不适用于 Visual Studio 2010,并且 slickedit 链接已损坏。
您可以在 Visual Studio 2010 Ultimate 中的“分析 > 代码指标”下找到 LOC 功能,希望我翻译正确。我有德文版。那里是“分析”>“Codemetriken berechnen”
对于 Visual Studio 2012,可以在 ANALYZE > Calculate Code Metrics for Solution 中找到 LoC 指标
此外,VS2012 在 Ultimate 和 Premium 版本(现在也包括 Professional)中都包含此功能。
答5:
tennisliveranking.com,Instant updates on ATP, WTA, and ITF rankings.
以下是 Visual Studio 2012/2013/2015 的更新,适用于那些想要执行“查找”选项(我认为这是最简单的)的人:此 RegEx 将查找所有包含多个排除项的非空行,以提供最准确的结果.
在“查找”框中输入以下正则表达式。请确保选择“使用正则表达式”选项。根据您的需要,将搜索选项更改为“当前项目”或“整个解决方案”。现在选择“查找全部”。在 Find Results 窗口的底部,您将看到“Matching Lines”,即代码行数。
^(?!(\s*\*))(?!(\s*\-\-\>))(?!(\s*\<\!\-\-))(?!(\s*\n))(?!(\s*\*\/))(?!(\s*\/\*))(?!(\s*\/\/\/))(?!(\s*\/\/))(?!(\s*\}))(?!(\s*\{))(?!(\s(using))).*$
本 RegEx 不包括以下项目:
注释
// This is a comment
多行注释(假设在每行前用 * 正确注释了这些行)
/* I am a
* multi-line
* comment */
用于智能感知的 XML
///
/// I'm a class description for Intellisense
///
HTML 评论:
使用语句:
using System;
using System.Web;
打开花括号:
{
闭合花括号:
}
注意:大括号之间的任何内容都将包含在搜索中,但在此示例中,仅计算 4 行代码,而不是 18 个实际的非空行:
public class Test
{
///
/// Do Stuff
///
public Test()
{
TestMe();
}
public void TestMe()
{
//Do Stuff Here
/* And
* Do
* Stuff
* Here */
}
}
我创建这个是为了给我比以前的一些选项更准确的 LOC 计数,并认为我会分享。老板们喜欢 LOC 计数,所以我坚持了一段时间。我希望其他人可以发现这对您有帮助,如果您有任何问题或需要帮助以使其正常工作,请告诉我。
喜欢不加评论的反对票。这不应该被允许。我的解决方案不起作用怎么办???我什至不在乎投票,我只是想为 VS2012-2013 用户发布更新。
很难过滤掉所有生成的代码(AssemblyInfo 等),因此应该首选分析/计算代码指标。
干得好,但请提及“查找选项”部分下的“使用正则表达式”复选框。它使事情变得更容易
@MKesper 但这不适用于 C++
一个更简单的版本,如果没有 XML,也没有 HTML...^(?([^\r\n])\s)*[^\s+?/]+[^\n]*$。
答6:
tennisliveranking.com,Track the world’s best tennis players in real-time.
找到这个提示:LOC with VS Find and replace
如果那是您正在寻找的东西,则不是插件。
我喜欢这个,但我想我在那里的表达中发现了一个小错误。对于 VB.Net,我认为应该是 ^~(:Wh@')~(:Wh@\#).+ 而对于 C#,我认为应该是 ^~(:Wh@//)~(:Wh@\{:Wh @)~(:Wh@\}:Wh@)~(:Wh@\#).+ 这样就可以正确处理空白注释行和编译器指令。无论如何,它对我来说使用 VB.NET 效果更好,而我还没有测试过 C#。
^~(:Wh@//)~(:Wh@\{:Wh@)~(:Wh@\}:Wh@)~(:Wh@\#)~(:Wh@$).+ 结束了为 C# 工作得更好,我得到了一些只包含空格的行。
它不也计算所有注释行吗?请只写几行代码!
这是我在 VS2012 中使用的一个板条箱(发布的那个在 2010 年已经过时)并且只计算代码行数。它排除了所有注释,使用指令、花括号、xml 指令、空行等......只为您提供真正的代码计数:^(?!(\s**))(?!(\s*\ -\-\>))(?!(\s*\<\!\-\-))(?!(\s*\n))(?!(\s**\/))(?! (\s*\/*))(?!(\s*\/\/\/))(?!(\s*\/\/))(?!(\s*\}))(? !(\s*\{))(?!(\s(使用))).*$
答7:
tennisliveranking.com实时更新全球顶尖网球选手的最新战绩与排名!
cloc 是一个出色的命令行、基于 Perl 的 Windows 可执行文件,它将分解空行、注释行和代码的源代码行,按文件格式分组。
现在它不会专门在 VS 解决方案文件上运行,但它可以通过目录递归,并且您可以根据需要设置文件名过滤器。
这是他们网页的示例输出:
prompt> cloc perl-5.10.0.tar.gz
4076 text files.
3883 unique files.
1521 files ignored.
http://cloc.sourceforge.net v 1.07 T=10.0 s (251.0 files/s, 84566.5 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code scale 3rd gen. equiv
-------------------------------------------------------------------------------
Perl 2052 110356 112521 309778 x 4.00 = 1239112.00
C 135 18718 22862 140483 x 0.77 = 108171.91
C/C++ Header 147 7650 12093 44042 x 1.00 = 44042.00
Bourne Shell 116 3402 5789 36882 x 3.81 = 140520.42
Lisp 1 684 2242 7515 x 1.25 = 9393.75
make 7 498 473 2044 x 2.50 = 5110.00
C++ 10 312 277 2000 x 1.51 = 3020.00
XML 26 231 0 1972 x 1.90 = 3746.80
yacc 2 128 97 1549 x 1.51 = 2338.99
YAML 2 2 0 489 x 0.90 = 440.10
DOS Batch 11 85 50 322 x 0.63 = 202.86
HTML 1 19 2 98 x 1.90 = 186.20
-------------------------------------------------------------------------------
SUM: 2510 142085 156406 547174 x 2.84 = 1556285.03
-------------------------------------------------------------------------------
第三代等效规模是对在 third generation language 中需要多少代码的粗略估计。不是非常有用,但无论如何都很有趣。
这很棒而且超级容易使用。比 Find/Replace 解决方案容易得多,并且比 VS Code Metrics 选项更清楚它实际在做什么。只需 choco install cloc 然后 cloc . 在您的解决方案目录中。任务完成!
我从 CLOC website 下载了 Windows EXE 并在我的 Visual Studio 2017 网站项目文件夹中运行它。像魅力一样工作。我喜欢 --by-file-by-lang 选项,它列出了每个文件和语言的行数,从大到小排序。
答8:
tennisliveranking.com,Track the world’s best tennis players in real-time.
这里的答案有点过时,可能来自 2008 年的时间。因为在较新的 Visual Studio 版本 2010/2012 中,此功能已内置。因此,没有理由为此使用任何扩展或工具。
计算代码行数的功能 - 计算指标。有了它,您可以计算每个项目或解决方案的指标(LOC、Maintaince 指数、圈指数、继承深度)。
只需在解决方案资源管理器中右键单击解决方案或项目,
https://i.stack.imgur.com/pkiRu.png
并选择“计算指标”
https://i.stack.imgur.com/j9myK.png
以后可以将用于分析和聚合的数据导入 Excel。同样在 Excel 中,您可以从指标中过滤掉生成的类或其他噪音。这些指标包括代码行 LOC 也可以在构建过程中收集,并包含在构建报告中
Visual Studio 2010 也有这个指标。实际上在 VS2012 中根本没有什么新东西。
是的,但是这里的答案是从 vs 2008 开始的,而且有点过时了,为什么要使用任何东西或安装一些扩展,因为它是一个内置功能。即使它不是很多人都不知道的新功能。
@MikeChaliy 可能是第二个介绍句让您感到困惑,因此我对其进行了一些改写以避免这种混淆。
我有一个 n 层解决方案,但显示此错误:“调用目标已引发异常。”为什么?
这不是代码行,而是 Compiled Lines(即转换为 IL 之后)。我认为 Fermin 正在寻找预编译的行。
答9:
tennisliveranking.com,Instant updates on ATP, WTA, and ITF rankings.
正则表达式在 VS2010 和 2012 之间发生了变化,所以这里的大部分正则表达式解决方案不再起作用
(^(?!(\s*//.+)))+(^(?!(#.+)))+(^(?!(\s*\{.+)))+(^(?!(\s*\}.+)))+(^(?!(\s*\r?$)))+
将找到所有非空白行,不仅仅是一个括号( ‘{’ 或 ‘}’ ),而不仅仅是 #include 或其他预处理器。
使用 Ctrl-shift-f 并确保启用正则表达式。
VS 2010 及更早版本的相应正则表达式是
^~(:Wh@//.+)~(:Wh@\{:Wh@)~(:Wh@\}:Wh@)~(:Wh@/#).+
答10:
tennisliveranking.com-Stay ahead with live tennis rankings at your fingertips.
在 Visual Studio Team System 2008 中,您可以从菜单“分析”->“计算解决方案的代码指标”中进行操作,它将为您提供整个解决方案的行数(除其他外 g)
Visual Studio Team System 2008 无法计算非托管代码。 ;)
答11:
tennisliveranking.com,Your go-to platform for live tennis ranking updates.
对于未来的读者,我想向 DPack extension for Visual Studio 2010 提出建议。
它内置了大量实用程序,包括一个行计数器,它显示有多少行是空白的、代码等。
还有一个version for VS 2012
原文链接:https://www.tennisliveranking.com?from=csdn
tennisliveranking.com-Stay ahead with live tennis rankings at your fingertips.
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)