WordCount测试小程序的实现
一、GitHub地址:
https://github.com/245553473/WordCount
二、PSP表格:
|
PSP |
PSP阶段 |
预估耗时(分钟) |
实际耗时(分钟) |
|
Planning |
计划 |
10 |
5 |
|
Estimate |
估计这个任务需要多少时间 |
10 |
5 |
|
Development |
开发 |
60 |
50 |
|
Analysis |
需求分析(包括学习新技术) |
5 |
5 |
|
Design Spec |
生成设计文档 |
5 |
5 |
|
Design Review |
设计复审(和同事审核文档) |
5 |
5 |
|
Coding Standard |
代码规范(为目前的开发制定合适的规范) |
5 |
5 |
|
Design |
具体设计 |
5 |
5 |
|
Coding |
具体编码 |
40 |
30 |
|
Code Review |
代码复审 |
5 |
5 |
|
Test |
测试 |
20 |
10 |
|
Reporting |
报告 |
10 |
10 |
|
Test Report |
测试报告 |
10 |
10 |
|
Size Measurement |
计算工作量 |
10 |
10 |
|
Postmortem & Process Improvement Plan |
事后总结,并提供过程改进计划 |
5 |
5 |
|
合计 |
205 |
165 |
三、 解题思路
通过文件路径获得所需测试的文件,FileReader.readLine()逐行读取文件内容,再通过正则表达式判断该行为空或是代码行或是注释行,每行的字符数直接获得相加即可。拓展功能中递归处理文件夹下符合条件的文件,通过实现java.io.FilenameFilter接口,并根据所给条件创建相应正则表达式,用File.list(FilenameFileter f)方法获取所给路径下满足条件的文件名即可。通过命令行获取参数后根据参数的不同确定执行不同的方法。
四、程序实现
创建一个信息类,里面存储所需要的各项数据,该类的构造器为所测试文件的路径,在构造一个新的对象时即对该文件进行分析,即将所有信息存储在内存中,不同的命令参数使得打印的数据不尽相同。通过java.io.PrintWriter对结果进行格式化打印。
五、 代码说明
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();
}
}
}
}
这是该程序的核心分析代码,对文件的所有信息进行统计。\\s 是正则表达式中代表空格的符号,包括\t,\n,空格, \\W代表非字符的符号。
六、测试设计过程
在wc.exe相同目录下放置多个.java文件,如A.java,b.java,c.java,d.java,e.cpp,f.cpp,g.cpp。
命令行输入以下命令:
(1) wc.exe -c A.java
(2) wc.exe -c -s .*java
(3) wc.exe -a A.java
(4) wc.exe -l A,java
(5) wc.exe -a -s .*java
(6) wc.exe -s -a .*cpp
(7)wc.exe -c -l -a -s .*cpp
(8) wc.exe -c -l -a -s .*java -o output.txt
(9) wc.exe -o output.txt -c f.cpp
(10) wc.exe -o output.txt -s -a .*cpp
七、参考文献链接
http://www.cnblogs.com/xinz/archive/2011/10/22/2220872.html
WordCount测试小程序的实现的更多相关文章
- WordCount 优化版测试小程序实现
Stage1:代码编写+单元测试 Github地址: https://github.com/245553473/wcPro.git PSP表格: PSP PSP阶段 预估耗时(分钟) 实际耗时(分钟) ...
- WordCount优化版测试小程序实现
Github地址:https://github.com/hcy6668/wordCountPro.git PSP表格: PSP PSP阶段 预估耗时(小时) 实际耗时(小时) Planning ...
- python 实现九型人格测试小程序
用python实现九型人格测试,并把测试结果绘制成饼图,实现代码如下: # @Description: 九型人格 import xlrd, matplotlib.pyplot as plt data ...
- WCF测试小程序
using System;using System.Collections.Generic;using System.Linq;using System.Runtime.Serialization;u ...
- 0001_第一个测试小程序Login
# -*- coding:utf-8 -*- user = raw_input("Username:") password = raw_input("Password:& ...
- STM32CubeMX 多通道 ADC DMA 配置 测试小程序
要点: 1.STM32F103C8T6单片机 2.ADC+DMA 多通道 重点是ADC+DMA配置,ADC+DMA配置如下 其他配置略略略略. 然后各位自行直看.ioc文件,生成代码后在while之前 ...
- 微信小程序和微信H5测试中易出Bug的点和注意事项
一.微信小程序 易出Bug的点: 小程序的分享转发功能 背景:小程序项目开发基本完毕也都已经测过几轮,功能上基本没有什么问题,但是上线后却被客户发现通过分享转发小程序给别人,别人无法正常打开的情况 原 ...
- 微信小程序测试的策略和注意事项
一.测试前准备(环境搭建) 1.前端页面 微信Web开发者工具安装.授权测试用的微信号可预览和调试小程序...可参考此文: 微信Web开发者工具-下载.安装和使用图解 2.管理后台 配置内网测试服务器 ...
- 微信小程序测试检查点
1.权限测试 需要检查以下几种情况下微信用户访问的权限1)未授权微信登录小程序未授权时,一般使用一些业务功能的时候,都会弹出提醒:先授权再操作对应功能.或在提交数据到后台的时候,会提示补充相关身份信息 ...
随机推荐
- 用javascript实现base64编码器以及图片的base64编码
前面的话 base-64作为常见的编码函数,在基本认证.摘要认证以及一些HTTP扩展中得到了大量应用.在前端领域,也常常把图片转换为base-64编码在网络中传输.本文将详细介绍base64的原理及用 ...
- 宝塔中的 base_opendir chattr
宝塔中的 base_opendir chattr base_opendir 目的是限制一些函数将手乱伸. 而宝塔中的自动配置的是 .user.ini,这个是文件是 +i ............ 这个 ...
- [转]200 OK (from cache) 与 304 Not Modified------没有这个规则(ETag是否移除)!!!from cache和304,请查看顶部的流程图!
//========没有这个规则(ETag是否移除) 20160422============// 200 OK (from cache) 与 304 Not Modified 为什么有的缓存是 20 ...
- UOJ #55 & 洛谷 P3920 紫荆花之恋 —— 动态点分治+替罪羊树
题目:http://uoj.ac/problem/55 https://www.luogu.org/problemnew/show/P3920 参考博客:https://www.cnblogs.com ...
- 存储过程错误异常处理例子 --> DECLARE EXIT HANDLER FOR SQLEXCEPTION (转)
刚才一个朋友问到: mysql 有类似 mssql 退出执行的方法不? 比如我执行到某个条件,下面就终止执行了. 想起以前写的存储过程,找了好久才找到,就发给他,希望对他有所帮助,贴在这里,留作 ...
- JavaScript 中事件绑定的三种方式
以下是在 JS 中事件绑定的三种方式. 1. HTML onclick attribute <button type="button" id="uplo ...
- java代码----方法类练习中~~~未领会
总结:今天我很失败,问了老师继承的问题还是没弄懂.因为,技术宅的能力,我好怕啊.太强了. package com.da.ima2; public class yut {// 使用substring方法 ...
- python中的 ' ' 和 " "
#!/usr/bin/python import MySQLdb try: conn = MySQLdb.connect(host = 'localhost', user = 'root', pass ...
- c#的日志插件NLog基本使用
本文介绍c#的日志插件NLog 安装插件 创建logger 日志级别 书写日志信息 配置 包装器 布局 安装插件 直接下载插件包 Install-Package NLog.Config 创建logge ...
- Solaris11修改主机名
在Solaris10中,主机名的修改是通过修改相关的配置文件实现的.在Solaris11中,主机名的配置信息已经转移到SMF配置库中,因此修改主机名的方式与Solaris10完全不同.以下是修改Sol ...