个人项目

个人项目

这个作业属于哪个课程 JMU计算21级班级博客
这个作业要求在哪里 个人项目
这个作业的目标 完成个人编程作业编码部分

项目Git链接:https://github.com/EternityLH/text_checker

1. PSP表格记录时间

*PSP2.1* *Personal Software Process Stages* *预估耗时(分钟)* *实际耗时(分钟)*
Planning 计划 10 15
· Estimate · 估计这个任务需要多少时间 90 120
Development 开发 60 80
· Analysis · 需求分析 (包括学习新技术) 30 15
· Design Spec · 生成设计文档 20 10
· Design Review · 设计复审 10 10
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 15 15
· Design · 具体设计 30 55
· Coding · 具体编码 40 65
· Code Review · 代码复审 20 25
· Test · 测试(自我测试,修改代码,提交修改) 30 40
Reporting 报告 20 20
· Test Repor · 测试报告 20 20
· Size Measurement · 计算工作量 15 15
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 10 15
· 合计 420 520

2. 计算模块接口的设计与实现过程

下面使用流程图展示核心算法设计:

3. 计算模块接口部分的性能改进

使用 CodeSonar 进行代码优化分析,消除所有警告:

使用 JProfiler 对代码包进行分析:

4. 计算模块部分单元测试展示

按照题目所示要求,使用命令行指令对绝对路径进行访问,同时生成output文件夹记录结果,指令如下:

python plagiarism_checker.py C:\Users\Eternity\Desktop\orig.txt C:\Users\Eternity\Desktop\orig_add.txt C:\Users\Eternity\Desktop\output.txt

第一次单元测试样例:

测试结果如下:

对原测试样例进行如下修改:

测试结果变为如下结果:

5. 计算模块部分异常处理说明

  • 文件读取异常 (FileNotFoundError):当无法打开或读取指定的原始文件或复制文件时,会引发该异常。设计目标是提供有意义的错误消息,指示文件路径是否正确、文件是否存在以及是否有适当的读取权限。
  • 编码异常 (UnicodeDecodeError):当读取文件时遇到无法解码的字符时,会引发该异常。设计目标是在异常发生时,提供清晰的错误消息,指出发生编码异常的具体位置和原因。
  • 命令行参数异常 (IndexError):当命令行参数数量不符合预期时,会引发该异常。设计目标是在参数数量不正确时,向用户提供正确的用法说明,并指示需要提供的参数数量和顺序。
  • 停用词表加载异常 (LookupError):当加载中文停用词表时遇到问题时,可能会引发该异常。设计目标是提供明确的错误消息,指示停用词表是否存在、是否需要更新或修改。

以文件读取为例:

class PlagiarismCheckerTest(unittest.TestCase):
    def test_file_not_found(self):
        # 准备测试数据
        original_file = "nonexistent_file.txt"
        copied_file = "copied_file.txt"

        # 执行测试
        with self.assertRaises(FileNotFoundError):
            calculate_similarity(original_file, copied_file)

适用错误场景:尝试计算不存在的原始文件的相似度。

posted @ 2023-09-20 22:51  你是又懂了  阅读(74)  评论(0)    收藏  举报