linq 如何计算C#解决方案中的代码行数,没有注解和空行,以及其他冗余的东西,等等?

j2cgzkjk  于 10个月前  发布在  C#
关注(0)|答案(7)|浏览(136)

冗余的东西,我的意思是名称空间,因为我知道他们是必要的,但如果有10k,它不会添加有价值的信息到表中。
这可以用Linq实现吗?

nxowjjhe

nxowjjhe1#

Visual studio会为你做这些,右键点击你的项目并选择Calculate Code Metrics

fumotvh3

fumotvh32#

无需重新发明轮子。看看Visual Studio Code Metrics PowerTool 11.0

概述

Code Metrics PowerTool是一个命令行实用程序,用于计算托管代码的代码度量并将其保存到XML文件。此工具使团队能够收集和报告代码度量,作为其构建过程的一部分。计算的代码度量如下:
·可维护性指标
·圈复杂度
·继承的深度
·类耦合
·代码行(行)
我知道你说你没有终极版,所以我只是想让你看看你错过了什么.


的数据
对于其他人,有SourceMonitor

inb24sb2

inb24sb23#

From:http://rajputyh.blogspot.in/2014/02/counting-number-of-real-lines-in-your-c.html

private int CountNumberOfLinesInCSFilesOfDirectory(string dirPath)
{
    FileInfo[] csFiles = new DirectoryInfo(dirPath.Trim())
                                .GetFiles("*.cs", SearchOption.AllDirectories);

    int totalNumberOfLines = 0;
    Parallel.ForEach(csFiles, fo =>
    {
        Interlocked.Add(ref totalNumberOfLines, CountNumberOfLine(fo));
    });
    return totalNumberOfLines;
}

private int CountNumberOfLine(Object tc)
{
    FileInfo fo = (FileInfo)tc;
    int count = 0;
    int inComment = 0;
    using (StreamReader sr = fo.OpenText())
    {
        string line;
        while ((line = sr.ReadLine()) != null)
        {
            if (IsRealCode(line.Trim(), ref inComment))
                count++;
        }
    }
    return count;
}

private bool IsRealCode(string trimmed, ref int inComment)
{
    if (trimmed.StartsWith("/*") && trimmed.EndsWith("*/"))
        return false;
    else if (trimmed.StartsWith("/*"))
    {
        inComment++;
        return false;
    }
    else if (trimmed.EndsWith("*/"))
    {
        inComment--;
        return false;
    }

    return
           inComment == 0
        && !trimmed.StartsWith("//")
        && (trimmed.StartsWith("if")
            || trimmed.StartsWith("else if")
            || trimmed.StartsWith("using (")
            || trimmed.StartsWith("else  if")
            || trimmed.Contains(";")
            || trimmed.StartsWith("public") //method signature
            || trimmed.StartsWith("private") //method signature
            || trimmed.StartsWith("protected") //method signature
            );
}

字符串
1.//和/* 类型的注解将被忽略。
1.用多行写的语句被认为是单行。
1.方括号(即,“X”)不被认为是线。
1.'using namespace'行被忽略。
1.类名称等行被忽略。

rpppsulh

rpppsulh4#

我对它们没有什么确切的概念,但是您可以使用Code Metrics Values来获得关于您的解决方案的一些统计数据,比如代码行。

lokaqttq

lokaqttq5#

我们已经使用了tfs立方体来获取关于我们的tfs上有多少行添加/删除/更改的数据。这一个你可以从excel中查看。但需要正确配置它。我不认为它会排除注解和空白行等。

yqyhoc1h

yqyhoc1h6#

Ctrl+Shift+f(在文件中查找)->将“;”放入“查找内容:“-文本框->按“查找全部”-按钮。
这个非常简单的方法利用了这样一个事实,即任何C#语句都是以一个后缀结尾的。而且,至少我没有在任何其他地方使用后缀(例如在注解中)。

axr492tv

axr492tv7#

如上所述,但以简单的方式
1.在解决方案资源管理器中右键单击项目。
1.选择“分析和代码清理”。
1.选择计算代码度量
然后你会得到所有的信息,比如所有的代码行,


的数据

相关问题