Loading

第一次个人编程作业

作业要求

这个作业属于哪个课程 21计科三班
这个作业要求在哪里 个人项目
这个作业的目标 编写一个论文查重程序,熟悉程序的开发流程

作业地址

https://github.com/Taoika/3121005077

PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planing 计划 10 5
· Estimate 估计这个任务需要多少时间 5 2
Development 开发 320 313
· Analysis 需求分析 (包括学习新技术) 20 20
· Design Spec · 生成设计文档 5 8
· Design Review · 设计复审 2 2
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 1 1
· Design · 具体设计 10 6
· Coding · 具体编码 280 360
· Code Review · 代码复审 15 10
· Test · 测试(自我测试,修改代码,提交修改) 360 300
Reporting 报告 20 16
· Test Repor · 测试报告 20 13
· Size Measurement · 计算工作量 5 3
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 10 7
合计 1083 1063

静态代码质量分析

全部python代码经过pylint工具的分析并消除警告报错

框架及关键设计

框架设计

框架设计

similarity模块详细设计

extraction_text

  1. 作用:文本提取
  2. 说明:通过BeautifulSoup库从html代码中提取文字
  3. 返回:去除html标签的文本字符串

participle

  1. 作用:分词
  2. 说明:通过jieba库对文本进行分词
  3. 返回:分词列表

clean

  1. 作用:文本内容清洗
  2. 说明:使用正则表达式对分词列表进行清洗,保留中英文与数字
  3. 返回:关键字列表

calc_similarity

  1. 作用:余弦相似度计算
  2. 参数:两份关键字列表
  3. 说明:使用gensim库,分别根据关键字列表计算词频并构造向量,计算两者的余弦相似度
  4. 返回:余弦相似度

模块接口的性能分析与改进

性能分析

  1. 使用cProfile进行性能分析
  2. 使用flameprof火焰图进行分析结果可视化
  3. 性能分析结果如下图所示:
    性能分析结果
  4. 结果分析:从图中我们可以看出各部分的结果较均匀,并没有很大的瓶颈所在,因此不着手进行优化

各模块单元测试

  1. 使用unittset工具进行单元测试
  2. 使用coverage工具进行分支覆盖率分析

filehandle模块

  1. 分别对read_file、write_answer函数进行测试
  2. 对write_answer函数的部分测试如下所示:
  • 思路:根据函数传参path、sim,分别使用可用的与不可用的path进行测试,分别使用大于0.6小于0.6的sim进行测试
  • 截图如下所示:
    write_answer测试

similarity模块

  1. 对participle函数的部分测试如下所示:
  • 思路:手动构造字符串传给participle函数,给出预期结果并判断
  • 截图如下所示:
    participle函数测试

分支覆盖率

  1. 分支覆盖率100%
  2. 截图如下所示:
    分支覆盖率

异常处理说明

文件读异常

  1. 目标:当目标文件路径路径读取失败的失败,给用户返回相应的提示
  2. 单元测试:
  • 当文件路径为空的时候,读取不到文件,提示文件读取失败
  • 测试样例如下:
    def test_write_file(self):
        res = write_answer('')
        self.assertIsNone(res)
  • 结果如下:
    读取失败提示

文件写异常

  1. 目标:当目标路径文件写入失败的时候,给用户返回相应的提示
  2. 单元测试:
  • 当文件路径为空的时候,无法写入文件,提示写入失败
  • 样例代码如下:
    def test_write_file3(self):
        res = write_answer('', 0.711)
        self.assertIsNone(res)
  • 结果如下:
    写入失败
posted @ 2023-09-18 00:09  Taoika  阅读(33)  评论(0)    收藏  举报