189
社区成员




这个作业属于哪个课程 | 构建之法-2021秋-福州大学软件工程 |
这个作业要求在哪里 | 2021秋软工实践第一次个人编程作业 |
这个作业的目标 | 实现一个程序功能,它可以对读入的C或C++代码文件进行不同等级的关键字提取。 |
学号 | 021900619 |
Personal software process stages | 预估耗时(分钟) | 预估耗时(分钟) |
---|---|---|
Planning 计划 | 40 | 30 |
Estimate 估计这个任务需要多少时间 | ||
Development开发 | ||
Analysis 需求分析 (包括学习新技术) | 10 | 10 |
Design Spec生成设计文档 | 40 | 90 |
Design Review 设计复审 | 20 | 20 |
Coding Standard 代码规范 (为目前的开发制定合适的规范) | 30 | 30 |
Design具体设计 | 60 | 40 |
Coding具体编码 | 30 | 40 |
Code Review代码复审 | 60 | 90 |
Test测试(自我测试,修改代码,提交修改) | 20 | 20 |
Reporting报告 | ||
Test Report 测试报告 | 20 | 30 |
Size Measurement计算工作量 | 30 | 30 |
Postmortem & Process Improvement Plan事后总结, 并提出过程改进计划 | 40 | 40 |
Total合计 | 300 | 510 |
打算用Python语言进行编程,任务分解成三部分:1.文件读取 2.关键词匹配 3.统计信息.由于该作业难度不是很大,因此免去了查资料,直接而进行代码编写。
读取文件并除去换行符
def readFile(path):
with open(path, 'r', encoding='utf-8') as f:
return f.read().replace("\n", "")
keyWords = ["auto", "break", "case", "char", "const", "continue", "default", "do", "double", "else", "enum", "extern",
"float", "for", "goto", "if", "int", "long", "register", "return", "short", "signed", "sizeof", "static",
"struct", "switch", "typedef", "union", "unsigned", "void", "volatile", "while"]
def countKeyWords(text, key_words):
'''计算关键词个数'''
return len(re.findall(f"(?:{'|'.join(key_words)})", text))
def countSwitch(text):
'''计算switch case结构个数'''
return [str(len(re.findall(r"case ",i))) for i in re.findall(r"switch(.*?)\}", text)]
def countIfElse(text):
'''计算if else'''
return len(re.findall(r"if\(.*?\){.*?}.*?else{.*?}",text))
def countIfElseifElse(text):
'''计算if-elseif-else'''
return len(re.findall(r"if.*?\{.*?\}.*?(?:else if.*?\{.*?\}.*?)+else.*?\{.*?\}",text))
缺乏性能分析等要求
没有写完所有要求的部分。