WordCount:字符统计小程序
github地址: https://github.com/Kassation/WordCount
任务1:分析整理需求, 完成PSP表格
-
分析整理需求:
首先分析基本功能:1. 统计字符数:空格,制表符,换行符均算作字符 2. 统计单词数:由空白符和逗号分隔开的字符串算作单词 3. 统计行数:由换行符分隔开的字符串算作一行
所以暂时模块化出三个函数,分别来进行不同的统计并直接返回输出的字符串。
然后需要实现读取命令行中的参数的功能,基本思路是,先获取-c、-w和-l命令,然后在输入字符串中查找最近的以“.c”为后缀的文件名命为输入文件。用同样的方法对-o命令和输出文件进行处理。需要注意的是命令的输入顺序与输出顺序无关。
然后分析扩展功能1. 递归处理目录下符合条件的文件 2. 返回更复杂的数据(代码行 / 空行 / 注释行) 3. 停用词表,统计文件单词总数时,不统计该表中的单词 这里比较难以实现的是判断并统计代码行,空行,注释行的数量,所以我的思路是,先统计空白行,然后将代码行分为几种情况分析代码行,最后非空白行和代码行的记为注释行。
-
PSP表格:
PSP阶段 | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|
计划 | 30 | 30 |
· 估计这个任务需要多少时间 | 30 | 30 |
开发 | 430 | 590 |
· 需求分析(包括学习新技术) | 40 | 60 |
· 设计复审(和同事审核设计文档) | 5 | 5 |
· 代码规范(为目前的开发制定合适的规范) | 5 | 5 |
· 具体设计 | 30 | 20 |
· 具体编码 | 300 | 420 |
· 代码复审 | 10 | 20 |
· 测试(自我测试,修改代码,提交修改) | 120 | 300 |
报告 | 50 | 70 |
· 测试报告 | 30 | 50 |
· 计算工作量 | 10 | 10 |
· 事后总结,并提出过程改进计划 | 10 | 10 |
合计 | 510 | 690 |
任务2:编码实现,并在Github提交
基本功能
因为这周末有更急的ddl(软件文档写作)要赶,又恰碰上出国中介老师的交接,也有不少文书需要提交,故没有太多时间来研究不熟练的Java语言,尽管后来老师非常人性化地延迟了ddl,因为已经用Python写了一部分了,所以干脆用Python磕到底了T_T
基础功能
下面截取一部分代码展示:
函数count_word—— 先去掉“,”在去掉空格再合并统计:
主函数中解析参数的部分:获取与“-”命令最近的文件名,找到后及时跳出循环
扩展功能
增加停用词表后修改过的count_word函数:
递归打开文件函数:
判断空白行和代码行的函数:
任务3:设计测试用例,编写单元测试
根据课堂上提到的白盒测试,将基础功能实现过程概括为如下控制流图:
其中有两个重要节点:A 和C
可以设计出测试路径:A-B;A-C-D; A-C-E; A-C-F; A-C-D-B; A-C-E-C-F
用例设计为:
wc.exe -o output.txt
wc.exe -c file.c
wc.exe -w file1.c
wc.exe -l file1.c
wc.exe -w file1.c -o output.txt
wc.exe -w -l file1.c -o output.txt
增加扩展功能后的测试文件 file.c:
停用词表 stop.txt
int print
测试脚本:
测试结果:
分析:对代码行和注释行的判断并不能满足所有用户可能出现的情况,时间关系只能默认用户懂得c语言代码而没有选用跟严谨的算法
测试评价:
这些测试脚本还不能完全覆盖程序中所有的语句,还需要设计更多的.c文件来测试不同情况下行数的统计。
参考链接:https://jingyan.baidu.com/article/ea24bc39ae73e8da62b33104.html