代码行统计的设计与实现
2015-07-04 09:51
316 查看
前阵子去面试,对方出了一个综合测试题,完成一个代码统计工具,分享出来,看其他人是否有类似需求。
大致需求如下:
设计一个程序:使用多线程,统计项目程序源代码行数;源代码是可以编译通过的合法的代码,统计其物理总行数、其中的空行行数、其中含有有效代码的行数、其中含有注释内容的行数。(建议编写命令行程序,不要使用正则表达式;要求自己独立完成答题,如果代码框架能更容易的扩展到支持多种语言的源代码行数统计,将获得更高的评价。)
小伙伴们,当你看到这个题目时,你会如何分析,如何设计你的实现呢?
以下对于代码的的行的统计的核心部分进行分析:
以C#为例,在一个代码文件中,存在空行、注释行、注释块以及混合等情况,如下:
这里在实现中需要考虑的细节主要有如下几个方面:
1. 在C#中,存在行注释与块注释,行注释以 // 开始,仅在本行有效;块注释以 /* 开始,以*/结束,可以跨行
2. 块注释可以跨行,并且在注释块中的字符串与行注释是无效的
3. 字符串也可以跨行,并且在字符串中的块注释与行注释是无效的
4. 处于行注释中的字符串与注释块是无效的
5. 当一行代码中存在多处间歇的块注释与行注释时,同时要记录为有效行及注释行,并且注释行这里只能算一行
另外,其他的如代码的复用及扩展,多线程的同步等,不在此文中讨论,具体看代码吧。
http://download.csdn.net/detail/tragicguy/8867449
欢迎有空的朋友一起讨论,也请有兴趣的朋友下下来看看,帮忙给打打分,哪些不足的地方,帮忙提点意见。
大致需求如下:
设计一个程序:使用多线程,统计项目程序源代码行数;源代码是可以编译通过的合法的代码,统计其物理总行数、其中的空行行数、其中含有有效代码的行数、其中含有注释内容的行数。(建议编写命令行程序,不要使用正则表达式;要求自己独立完成答题,如果代码框架能更容易的扩展到支持多种语言的源代码行数统计,将获得更高的评价。)
小伙伴们,当你看到这个题目时,你会如何分析,如何设计你的实现呢?
以下对于代码的的行的统计的核心部分进行分析:
以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
欢迎有空的朋友一起讨论,也请有兴趣的朋友下下来看看,帮忙给打打分,哪些不足的地方,帮忙提点意见。
相关文章推荐
- PHP获取13位时间戳
- C#实现的字符串相似度对比类
- php-根据用户IP获得用户地址-新浪
- PHP QR库生成二维码完整源码包分享
- GitHub教程
- c#、.Net和ASP.Net的区别
- MATLAB中取整函数(fix, floor, ceil, round)的使用
- spring4.1+springmvc4.1+mybatis3.2.8+spring-security3.2.5集成环境建设
- Java知多少(112)数据库之删除记录
- php中explode和split的区别
- 【C语言】编写函数实现库函数atoi,把字符串转换成整形
- C++ Builder XE7 调用JAVA的JAR文件
- 在Python中使用MYSQL
- 【C语言】编写函数实现字符串旋转
- [C语言】模拟实现库函数strstr,查找子字符串
- storm-编程入门
- eclipse打开过的工程信息保存路径
- 【北大青鸟视频学习】--ASP.NET控件
- Python匿名函数
- 【C语言】判断一个字符串是否是一个字符串的旋转字符串