第一次个人编程作业
作业要求
| 这个作业属于哪个课程 | 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
- 作用:文本提取
- 说明:通过BeautifulSoup库从html代码中提取文字
- 返回:去除html标签的文本字符串
participle
- 作用:分词
- 说明:通过jieba库对文本进行分词
- 返回:分词列表
clean
- 作用:文本内容清洗
- 说明:使用正则表达式对分词列表进行清洗,保留中英文与数字
- 返回:关键字列表
calc_similarity
- 作用:余弦相似度计算
- 参数:两份关键字列表
- 说明:使用gensim库,分别根据关键字列表计算词频并构造向量,计算两者的余弦相似度
- 返回:余弦相似度
模块接口的性能分析与改进
性能分析
- 使用cProfile进行性能分析
- 使用flameprof火焰图进行分析结果可视化
- 性能分析结果如下图所示:

- 结果分析:从图中我们可以看出各部分的结果较均匀,并没有很大的瓶颈所在,因此不着手进行优化
各模块单元测试
- 使用unittset工具进行单元测试
- 使用coverage工具进行分支覆盖率分析
filehandle模块
- 分别对read_file、write_answer函数进行测试
- 对write_answer函数的部分测试如下所示:
- 思路:根据函数传参path、sim,分别使用可用的与不可用的path进行测试,分别使用大于0.6小于0.6的sim进行测试
- 截图如下所示:

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

分支覆盖率
- 分支覆盖率100%
- 截图如下所示:

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

文件写异常
- 目标:当目标路径文件写入失败的时候,给用户返回相应的提示
- 单元测试:
- 当文件路径为空的时候,无法写入文件,提示写入失败
- 样例代码如下:
def test_write_file3(self):
res = write_answer('', 0.711)
self.assertIsNone(res)
- 结果如下:

本文来自博客园,作者:Taoika,转载请注明原文链接:https://www.cnblogs.com/cenkuntao/p/17705829.html

浙公网安备 33010602011771号