WordCount程序与测试
Github地址:
https://github.com/hcy6668/wordCount
PSP表格:
PSP |
PSP阶段 |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
60 |
40 |
Estimate |
估计这个任务需要多少时间 |
480 |
985 |
Development |
开发 |
180 |
240 |
Analysis |
需求分析(包括学习新技术) |
60 |
40 |
Design Spec |
生成设计文档 |
30 |
30 |
Design Review |
设计复审(和同事审核文档) |
5 |
5 |
Coding Standard |
代码规范(为目前的开发制定合适的规范) |
30 |
20 |
Design |
具体设计 |
25 |
40 |
Coding |
具体编码 |
240 |
380 |
Code Review |
代码复审 |
30 |
40 |
Test |
测试 |
40 |
40 |
Reporting |
报告 |
25 |
40 |
Test Report |
测试报告 |
20 |
55 |
Size Measurement |
计算工作量 |
15 |
15 |
Postmortem & Process Improvement Plan |
事后总结,并提供过程改进计划 |
15 |
15 |
合计 |
1255 |
1970 |
解题思路:
识别用户的命令,读取需要分析的源文件。
从读取文件开始,分析每一行代码的规则,用正则表达式进行代码类型判断,进行统计即可。
代码说明:
private void analysis(){
if(!isAnalysis){
isAnalysis=true;
String s;
BufferedReader in = null;
try {
n =new BufferedReader(new FileReader(path.toString()));
while((s=in.readLine())!=null){
switch(analysisLine(s)){
case SPACE:spaceSum++;break;
case CODE:codeSum++;break;
case NOTE:noteSum++;break;
}
charNum+=s.replaceAll("\\s", "").length();
wordNum+=s.split("\\W+").length;
lineSum++;
}
} catch (IOException e) {
System.out.println("文件不存在"+path());
}finally{
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
此处使用了梁锦琳同学的分析代码[1]
测试设计过程:
在wc.exe的目录下放置测试文件,分别输入以下命令:
wc.exe -c -a -l -w test.c
wc.exe -c test.c -o output.txt
wc.exe -c test.c -e stop.txt
wc.exe -c -a -l -w test.c -e stop.txt -o output.txt
wc.exe -s -c -w -l *.c
wc.exe -c -c -b test.c
wc.exe -c -w -o output.txt/WCtest.exe -c -w test.c -o
wc.exe -c wc.exe
wc.exe -o output.txt -s -a .*cpp
参考文献链接:
[1]http://www.cnblogs.com/carroll/p/8601338.html
http://www.cnblogs.com/xinz/archive/2011/10/22/2220872.html
最新文章
- 在access中如何创建数据库。你认为数据库在网站开发中所扮演的角色是什么。使用数据库和使用文件,两者的优缺点各是什么。
- HTML滚动字幕代码参数详解及Js间隔滚动代码
- 设计模式-UML类图的各符号含义(转)
- MySQL 创建用户 与 授权
- 在Eclipse中导入文件和文件夹
- 跟我学习dubbo-Dubbo管理控制台的安装(3)
- pomelo windows 环境
- APNs-远程推送
- 如何跳到系统设置界面-b
- U3D 收藏一个飞机随机运动的方法
- 基于visual Studio2013解决C语言竞赛题之1094纵横图
- asm 盘头损失,破坏
- Swagger 配置
- 大一上c语言学习总结
- [C++]PAT乙级1002.写出这个数(20/20)
- kvm报错集
- tomcat 查看和修改内存
- Codeforces Round #467 (Div. 2) E	-Lock Puzzle
- Echarts 使用asp.net +ashx+ajax 实现 饼图、柱形图后台交互
- node+express搭建个人网站(2)
热门文章
- Qt setstylesheet指定窗口
- 使用ODP.NET连接Oracle数据库
- Largest Rectangular Area in a Histogram 最大连续面积
- Go-延时函数defer
- ABP EventBus(事件总线)
- vjson.hpp
- [redis] redis 命令
- LINQ to Entities 不识别方法“System.DateTime AddDays(Double)
- .Net Core使用视图组件(ViewComponent)封装表单文本框控件
- js用解构来定义变量并赋值