代码行统计的设计与实现


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


大致需求如下:

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


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




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

以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


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

你可能感兴趣的:(源代码,C#,代码统计,统计工具)