您的位置:首页 > 编程语言

代码行统计的设计与实现

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

大致需求例如以下:

设计一个程序:使用多线程。统计项目程序源码行数。源码是能够编译通过的合法的代码,统计其物理总行数、当中的空行行数、当中含有有效代码的行数、当中含有凝视内容的行数。(建议编写命令行程序。不要使用正則表達式;要求自己独立完毕答题,假设代码框架能更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

欢迎有空的朋友一起讨论。也请有兴趣的朋友下下来看看,帮忙给打打分,哪些不足的地方,帮忙提点意见。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: