问:

是否可以在整个解决方案中找到代码行数?我听说过 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.

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐