Github地址
https://github.com/zhengjinhuai/wc.exe
项目要求
- wc.exe是一个 常见的工具,它能够统计文本文件的字符数、单词数和行数。本次项目要求写一个命令行程序,模仿已有的wc.exe的功能,并加以扩充,同时使用GUI进行可视化
- 具体功能要求:
- 程序处理用户需求的模式为:wc.exe [parameter] [file_name]
- 基本功能:
- wc.exe -c file.c //返回文件 file.c 的字符数
- wc.exe -w file.c //返回文件 file.c 的词的数目
- wc.exe -l file.c //返回文件 file.c 的行数
- 扩展功能:
- -s 递归处理目录下符合条件的文件
- -a 返回更复杂的数据(代码行 / 空行 / 注释行)
- 高级功能:
- -x 参数。这个参数单独使用。如果命令行有这个参数,则程序会显示图形界面,用户可以通过界面选取单个文件,程序就会显示文件的字符数、行数等全部统计信息。
- 需求举例:wc.exe -s -a *.c
PSP表格:
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 18 |
· Estimate | · 估计这个任务需要多少时间 | 20 | 18 |
Development | 开发 | 770 | 850 |
· Analysis | · 需求分析 | 60 | 70 |
· Design Spec | · 生成设计文档 | 50 | 50 |
· Design Review | · 设计复审 | 30 | 40 |
· Coding Standard | · 代码规范 | 20 | 20 |
· Design | · 具体设计 | 90 | 90 |
· Coding | · 具体编码 | 310 | 350 |
· Code Review | · 代码复审 | 100 | 110 |
· Test | · 测试(自我测试,修改代码,提交修改) | 120 | 110 |
Reporting | 报告 | 140 | 125 |
· Test Report | · 测试报告 | 60 | 50 |
· Size Measurement | · 计算工作量 | 30 | 20 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 50 | 55 |
Total | 总计 | 940 | 983 |
解题思路
看到题目要求写一个命令行程序,马上想到平常经常使用的argparse命令参数解析模块,因此也决定使用python来完成这个项目
- 命令行的参数解析使用argparse模块,通过add_argument()函数设置参数,选项-c、-w、-l、-s、-a、-x设置为可选参数,文件的绝对路径设置为位置参数
- 字符数、单词数、总行数等处理文本信息的过程使用readline()函数、str.strip()方法、str.split()方法等配合使用,同时,考虑边界信息
- 由于使用通配符递归处理目录下符合条件的文件相对麻烦,同时,通配符有多种组合,因此使用glob模块配合处理,以确保程序经得起测试
- 空行和代码行相对容易处理,先筛选空行和注释行,其余的为代码行。
- 注释行的处理主要分为四种情况:“单个注释符号”、“多行注释符号”、“多行注释符号在同一行”和“多行注释的开始行和结束行”(具体可看代码注释)
- 由于考虑不同编程语言的注释符号不一样,因此可以选择设置一个CONF配置文件来存放不同语言的注释符号,对应处理不同的编程语言
- 图形界面使用的PyQt5。由于现在python的图形界面开发更多地选择PyQt5,因此也选择这个,用法和其他语言相差无几
设计实现过程
项目测试
- 终端测试
- 测试单个文件的字符数、单词数、行数、注释行、空行、代码行数
- 测试递归查询
- 递归查询并处理
- gui
-
扫描二维码关注公众号,回复: 7363042 查看本文章
-
- 代码覆盖率
- 我想睡个觉
项目总结
我想想啊……