Fire_beat

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
这个作业属于哪个课程 http://dwz.date/cts4
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2020/homework/11167
这个作业的目标 学习GitHub和Git用法,学会如何分析并处理Json格式的数据文件,提高自主学习的能力
学号 031801327

一、PSP表

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

二、思路叙述

  (1)*数学建模刚刚建完便想起了软工作业,疲惫不堪的我首先在看到题目时的确是一头雾水,不是很懂的题目的意思,之前做过的题目中似乎从未出现过这种样子的题目,心情是苦闷的。把纪学长给的代码放进python里面运行好像也不太顺畅。*
  (2)*因为开始做时已经过了好几天了,在网络上查找资料以及和舍友的交谈讨论中逐渐明白了题目的意思,即要求我们解析一个大规模的json文件,而且在文件夹中会有多个json文件,需要通过读取文件夹找出其中所有的json文件,并对其进行解析,而不能仅仅读取一个文件*
  (3)*好像明白了什么,本身的筛找Event好像并不难,if语句再来个计数器,但是命令行咋写?好像从未接触过类似的要求。*
  (4)*不管咋样,先试试再说,一边检索一边问一边coding*

三、过程描述与困难解决

流程图:

1.首先要把 JSON 文件进行处理,先用os.listdir()返回指定的文件夹包含的文件名的列表,通过第一个open函数建立一个空的json文件,双重for in循环遍历读取文件通过write()函数写入数据到新的json文件。其实重点就在于建立空的json文件来作为一个接受数据的文件。
然而一开始以为只有一个json文件,而且没有写入操作。

修正:


2.对Event进行计数
event信息对应在'type'中,user对应'actor''login',repo对应'repo''name'然而一开始写的似乎只能支持前两个小题,对于第三问似乎要再建立一个循环,但是似乎可以巧妙地运用顺序执行的特点,通过询问与交流,在他人的启示下。这样的写法下,就可以通过continue进行制约,在判断是否type为Event后,将第三种即每一个人在每一个项目的 4 种事件的数量来用count_event表示。


3.命令行参数与输入输出
参考资料:http://www.cppcns.com/jiaoben/python/271196.html
https://blog.csdn.net/lemon_tree12138/article/details/50912898
使用getopt模块获取命令行选项和参数,利用sys模块将命令行参数保存在opt, arg中,虽然它只能简单的处理命令行参数,但是对于本题是可用的。
args:args为需要解析的参数列表。一般使用sys.argv[1:],这样可以过滤掉第一个参数(ps:第一个参数是脚本的名称,它不应该作为参数进行解析)
shortopts:简写参数列表,longopt:长参数列表,opt为分析出的格式信息,是一个两元组的列表。每个元素为:(选项串,附加参数)。如果没有附加参数则为空串'';
由于格式要求python3 GHAnalysis.py <--init|-i>
python3 GHAnalysis.py <-u|--user> user <-e|--event> <PushEvent|IssueCommentEvent|IssuesEvent|PullRequestEvent>
python3 GHAnalysis.py <-r|--repo> user/repo <-e|--event> <PushEvent|IssueCommentEvent|IssuesEvent|PullRequestEvent>
python3 GHAnalysis.py <-u|--user> user <-r|--repo> user/repo <-e|--event> <PushEvent|IssueCommentEvent|IssuesEvent|PullRequestEvent>
首先判断是否初始化。
根据opt的长度,for in循环下通过命令行输入来进行username,repo,event三个变量的赋值。
输出Event_count
这个命令行是我在本次编程作业中遇到的最大问题,由于它与整个代码有直接关系,一旦有问题就很麻烦。
询问了同学并查看了他们的做法以及研究了助教的代码,并上网到各种小网站进行学习,借鉴。

4.git与github的使用
按照b站上的教程一步步学习,同时发现其实在安装时多点一下,右键直接用git bash就可以,没必要调命令窗口。
由于按照教程来进行本地仓库与远程仓库的互相交互,并没有太大的问题,并在fork并上传代码后书写了codestyle即 https://github.com/Ice-wave/2020-personal-python/blob/master/codestyle.md

4 性能测试/单元覆盖率

单元覆盖率:


性能测试:

啊这。
locust安装失败?

5 总结

感觉自己好像多会了一点东西?突然有种感觉这写编程题就和学习一门外语一样的过程,看上去都看不懂,查清楚意思以后就挺明白了。
今后目标:争取下次将作业完成的更加完整、精确。
That's it.

posted on 2020-09-16 22:59  Fire_beat  阅读(128)  评论(1编辑  收藏  举报