zoukankan      html  css  js  c++  java
  • 代码行统计的设计与实现


    前阵子去面试,对方出了一个综合測试题。完毕一个代码统计工具,分享出来。看其它人是否有类似需求。


    大致需求例如以下:

    设计一个程序:使用多线程。统计项目程序源码行数。源码是能够编译通过的合法的代码,统计其物理总行数、当中的空行行数、当中含有有效代码的行数、当中含有凝视内容的行数。(建议编写命令行程序。不要使用正則表達式;要求自己独立完毕答题,假设代码框架能更easy的扩展到支持多种语言的源码行数统计,将获得更高的评价。)


    小伙伴们,当你看到这个题目时。你会怎样分析,怎样设计你的实现呢?




    下面对于代码的的行的统计的核心部分进行分析:

    以C#为例,在一个代码文件里,存在空行、凝视行、凝视块以及混合等情况,例如以下:

     public static void TestFunc()
            {
    
                //上面的一行是一个空行,本行是一个凝视行
                int nFlag = 0;
                //上面的一行是一个有效果代码行
                string strTest = "这是一个字符串。当中的凝视不起作用//没用的凝视行。/*没用的凝视块*/";
                /* 这是一个代码凝视块
                 当中的行凝视及字符串均无效
                 "无效的字符串"
                 //无效的行凝视
                 */
                strTest = string.Format("{0}{1}", /*块凝视*/"字符串", /* //块凝视中行凝视*/nFlag); //这是一行有效果代码与凝视混合的
            }

    这里在实现中须要考虑的细节主要有例如以下几个方面:

    1. 在C#中。存在行凝视与块凝视,行凝视以 // 開始,仅在本行有效;块凝视以 /* 開始,以*/结束。能够跨行 

    2. 块凝视能够跨行,而且在凝视块中的字符串与行凝视是无效的

    3. 字符串也能够跨行,而且在字符串中的块凝视与行凝视是无效的

    4. 处于行凝视中的字符串与凝视块是无效的

    5. 当一行代码中存在多处间歇的块凝视与行凝视时,同一时候要记录为有效行及凝视行。而且凝视行这里仅仅能算一行 


    另外,其它的如代码的复用及扩展,多线程的同步等,不在此文中讨论,详细看代码吧。

    http://download.csdn.net/detail/tragicguy/8867449


    欢迎有空的朋友一起讨论。也请有兴趣的朋友下下来看看,帮忙给打打分,哪些不足的地方,帮忙提点意见。 

  • 相关阅读:
    POJ1741 Tree(树分治)
    codeforces713D Animals and Puzzle(二维倍增)
    codeforces713C Sonya and Problem Wihtout a Legend(dp)
    codeforces724E Goods transportation(最小割——dp)
    codeforces710E Generate a String(dp)
    codeforces Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) 题解(A-D)
    BNUOJ52317 As Easy As Possible(树上倍增)
    hihocoder1386 Pick Your Players(dp)
    常用函数
    vector总结(更新中。。。)
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/6979047.html
Copyright © 2011-2022 走看看