软工作业(二):个人项目-wc.exe(Python实现)

Github地址


 https://github.com/zhengjinhuai/wc.exe

 

项目要求


  1.  wc.exe是一个 常见的工具,它能够统计文本文件的字符数、单词数和行数。本次项目要求写一个命令行程序,模仿已有的wc.exe的功能,并加以扩充,同时使用GUI进行可视化
  2. 具体功能要求:
    • 程序处理用户需求的模式为:wc.exe [parameter] [file_name]
  3. 基本功能:
    • wc.exe -c file.c     //返回文件 file.c 的字符数
    • wc.exe -w file.c    //返回文件 file.c 的词的数目
    • wc.exe -l file.c      //返回文件 file.c 的行数
  4. 扩展功能:
    • -s   递归处理目录下符合条件的文件
    • -a   返回更复杂的数据(代码行 / 空行 / 注释行)
  5. 高级功能:
    •  -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来完成这个项目

  1. 命令行的参数解析使用argparse模块,通过add_argument()函数设置参数,选项-c、-w、-l、-s、-a、-x设置为可选参数,文件的绝对路径设置为位置参数
  2. 字符数、单词数、总行数等处理文本信息的过程使用readline()函数、str.strip()方法、str.split()方法等配合使用,同时,考虑边界信息
  3. 由于使用通配符递归处理目录下符合条件的文件相对麻烦,同时,通配符有多种组合,因此使用glob模块配合处理,以确保程序经得起测试
  4. 空行和代码行相对容易处理,先筛选空行和注释行,其余的为代码行。
    • 注释行的处理主要分为四种情况:“单个注释符号”、“多行注释符号”、“多行注释符号在同一行”和“多行注释的开始行和结束行”(具体可看代码注释)
    • 由于考虑不同编程语言的注释符号不一样,因此可以选择设置一个CONF配置文件来存放不同语言的注释符号,对应处理不同的编程语言
  5. 图形界面使用的PyQt5。由于现在python的图形界面开发更多地选择PyQt5,因此也选择这个,用法和其他语言相差无几

设计实现过程


项目测试


  1.   终端测试
  2.  测试单个文件的字符数、单词数、行数、注释行、空行、代码行数
  3. 测试递归查询 
    •  
  4. 递归查询并处理


  5. gui
    • 扫描二维码关注公众号,回复: 7363042 查看本文章
  6. 代码覆盖率
    • 我想睡个觉

项目总结


  我想想啊…… 

 

 

 

猜你喜欢

转载自www.cnblogs.com/jinhuai/p/11545996.html