代码行统计的设计与实现


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


大致需求如下:

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


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




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

以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


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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值