一、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测试小程序的实现的更多相关文章

  1. WordCount 优化版测试小程序实现

    Stage1:代码编写+单元测试 Github地址: https://github.com/245553473/wcPro.git PSP表格: PSP PSP阶段 预估耗时(分钟) 实际耗时(分钟) ...

  2. WordCount优化版测试小程序实现

    Github地址:https://github.com/hcy6668/wordCountPro.git PSP表格: PSP  PSP阶段  预估耗时(小时)  实际耗时(小时)  Planning ...

  3. python 实现九型人格测试小程序

    用python实现九型人格测试,并把测试结果绘制成饼图,实现代码如下: # @Description: 九型人格 import xlrd, matplotlib.pyplot as plt data ...

  4. WCF测试小程序

    using System;using System.Collections.Generic;using System.Linq;using System.Runtime.Serialization;u ...

  5. 0001_第一个测试小程序Login

    # -*- coding:utf-8 -*- user = raw_input("Username:") password = raw_input("Password:& ...

  6. STM32CubeMX 多通道 ADC DMA 配置 测试小程序

    要点: 1.STM32F103C8T6单片机 2.ADC+DMA 多通道 重点是ADC+DMA配置,ADC+DMA配置如下 其他配置略略略略. 然后各位自行直看.ioc文件,生成代码后在while之前 ...

  7. 微信小程序和微信H5测试中易出Bug的点和注意事项

    一.微信小程序 易出Bug的点: 小程序的分享转发功能 背景:小程序项目开发基本完毕也都已经测过几轮,功能上基本没有什么问题,但是上线后却被客户发现通过分享转发小程序给别人,别人无法正常打开的情况 原 ...

  8. 微信小程序测试的策略和注意事项

    一.测试前准备(环境搭建) 1.前端页面 微信Web开发者工具安装.授权测试用的微信号可预览和调试小程序...可参考此文: 微信Web开发者工具-下载.安装和使用图解 2.管理后台 配置内网测试服务器 ...

  9. 微信小程序测试检查点

    1.权限测试 需要检查以下几种情况下微信用户访问的权限1)未授权微信登录小程序未授权时,一般使用一些业务功能的时候,都会弹出提醒:先授权再操作对应功能.或在提交数据到后台的时候,会提示补充相关身份信息 ...

随机推荐

  1. 使用kaptcha验证码组件操作演示

    1.创建一个Maven项目 2.在pom.xml中引入相关依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmln ...

  2. Linux命令学习(20):traceroute命令

    版权声明 更新:2017-06-13博主:LuckyAlan联系:liuwenvip163@163.com声明:吃水不忘挖井人,转载请注明出处! 1 文章介绍 本文介绍了Linux下面的mv命令. 2 ...

  3. Node.js + Express

    相关链接: 1.https://www.jianshu.com/p/db4df1938eca 2.前端发起GET请求:http://localhost:3000/api/login?name=admi ...

  4. SQL Server 学习系列之六

    SQL Server 学习系列之六 SQL Server 学习系列之一(薪酬方案+基础) SQL Server 学习系列之二(日期格式问题) SQL Server 学习系列之三(SQL 关键字) SQ ...

  5. Installing Redis more properly

    Installing Redis more properly Running Redis from the command line is fine just to hack a bit with i ...

  6. div 遮罩层 弹窗

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. 【render】partial及其局部变量

    原文:http://www.cnblogs.com/lwm-1988/archive/2011/09/13/2175041.html 1. partial 1.1 把partial作为view的一部分 ...

  8. 2015.11.3 RichBox改变若干文本颜色

    for(int i=1;i<rtb.Lines.Length;i++) { if(rtb.Lines[i] == rtb.Lines[i - 1]) { int bg = rtb.GetFirs ...

  9. Solaris10上如何识别新增加的HDLM LUN

    先在磁盘阵列上将新加LUN映射给主机组,然后在光纤交换机上增加相关zone信息.以下是Solaris10上需要执行的操作步骤. 在Solaris10上重新扫描磁盘 -bash-3.2# cfgadm ...

  10. C#一般处理程序 ashx.cs使用Session报错问题

    HttpContext.Current.Session["UserID"].ToString();//报错,报Session为Null, 此时需要添加引用和继承IRequiresS ...