JAVA语言用正则表达式统计代码量
2013-11-10 10:38
295 查看
这两天看了看马士兵老师讲的正则表达式的视频,里面有个统计代码量的例子,觉得挺有用的,看完之后自己写了一遍,代码非常类似,但是确实是自己不看视频重新写的,而且有改动,为了尊重原创,故写了此段话。下面直接上代码。
写得比较粗糙,不过实现了主要功能,我觉得大家如果有兴趣的话,可以做一些扩展,比如让用户输入文件或文件夹路径(不是用参数的形式),或者写到配置文件中,再好点的话可以做个UI或者web界面,由于我是想练习正则表达式,就不那些功能了。
刚学正则表达式,希望我们可以互相讨论。
import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class CodeCounter { private static int commentLines = 0; private static int codeLines = 0; private static int whiteLines = 0; public static void main(String []args){ File file = new File(args[0]); if(!file.exists()){ System.out.println("文件或文件夹不存在,请重新输入"); return; } if(file.isDirectory()){ File[] files = file.listFiles(); if(files != null && files.length >0){ for(File f : files){ if(f.getName().matches("[a-zA-Z_$]\\w*\\.java")) printCodeInfo(f); } } }else{ if(file.getName().matches("[a-zA-Z_$]\\w*\\.java")) printCodeInfo(file); } } private static void printCodeInfo(File file){ boolean flag = false; try { BufferedReader br = new BufferedReader(new FileReader(file)); String line = ""; try { while((line = br.readLine()) != null){ if(line.matches("\\s*")){ whiteLines ++; }else if(line.matches("\\s*/.*(?!\\*/$)")){ commentLines ++; flag = true; }else if(line.matches("\\s*.*\\*/")){ commentLines ++; flag = false; }else if(flag == true){ commentLines ++; }else if(line.matches("\\s//.*")){ commentLines ++; }else{ codeLines ++; } } } catch (IOException e) { e.printStackTrace(); } } catch (FileNotFoundException e) { e.printStackTrace(); } System.out.println(file.getAbsolutePath() + ":"); System.out.println("空行: " + whiteLines + " 行"); System.out.println("注释行:" + commentLines + " 行"); System.out.println("代码:: " + codeLines + " 行"); } }
写得比较粗糙,不过实现了主要功能,我觉得大家如果有兴趣的话,可以做一些扩展,比如让用户输入文件或文件夹路径(不是用参数的形式),或者写到配置文件中,再好点的话可以做个UI或者web界面,由于我是想练习正则表达式,就不那些功能了。
刚学正则表达式,希望我们可以互相讨论。
相关文章推荐
- Java语言的细节
- Java 语言中 Enum 类型的使用介绍
- Java语言基础总结
- 二叉树的实现(Java语言描述)
- 《程序设计入门—Java语言.翁恺》第七周编程作业(2)-完数
- Java脚本语言程序员手册(Java Scripting Programmer's Guide)
- F3: Sun的新Java脚本语言
- java语言程式设计——异常处理语法 3
- F3: Sun的新Java脚本语言
- JAVA 语言的发展简史
- Java语言基础-与注释有关的语法
- java语言读取文本文件的指定行
- Java语言基础知识
- java语言基础(48)——局部内部类访问外部成员和局部成员
- Java语言基础19-字符串
- Java语言常用的运算符和表达式详解
- 基于Java的开源的模型驱动转换器和抽象用户接口标识语言6.1发布
- 用JAVA 创建自己的 A4 打印语言
- 基于Java的开源的模型驱动转换器和抽象用户接口标识语言6.1发布
- java语言基础