利用java小工具-----统计项目代码量
来源:互联网 发布:ubuntu socks5 服务器 编辑:程序博客网 时间:2024/09/21 09:22
package com.util;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * * 类名:CodeCounter.java<br> * <p> * 功能:统计项目代码量 工具类 * </p> * * @Author:<a href="mailto:llnyxxzj@163.com">lilong</a> <br/> * @Date:2013-3-15<br/> * @Time:下午5:12:11 <br/> * @Version:1.1 <br/> */public class CodeCounter {static long commentLine = 0;static long whiteLine = 0;static long normalLine = 0;static long totalLine = 0;static boolean comment = false;public static void main(String[] args) {File file = new File("F:\\Workspaces\\Workspaces\\stockassistant"); // 在这里输入需要统计的文件夹路径getChild(file);System.out.println("有效代码行数: " + normalLine);System.out.println("注释行数: " + commentLine);System.out.println("空白行数: " + whiteLine);System.out.println("总代码行数: " + totalLine);}private static void getChild(File child) { // 遍历子目录if (child.getName().matches(".*\\.java$")) { // 只查询java文件try {BufferedReader br = new BufferedReader(new FileReader(child));String line = "";while ((line = br.readLine()) != null) {parse(line);}} catch (FileNotFoundException e1) {e1.printStackTrace();} catch (IOException e) {e.printStackTrace();}}if (child.listFiles() != null) {for (File f : child.listFiles()) {getChild(f);}}}private static void parse(String line) {line = line.trim();totalLine++;if (line.length() == 0) {whiteLine++;} else if (comment) {commentLine++;if (line.endsWith("*/")) {comment = false;} else if (line.matches(".*\\*/.+")) {normalLine++;comment = false;}} else if (line.startsWith("//")) {commentLine++;} else if (line.matches(".+//.*")) {commentLine++;normalLine++;} else if (line.startsWith("/*") && line.matches(".+\\*/.+")) {commentLine++;normalLine++;if (findPair(line)) {comment = false;} else {comment = true;}} else if (line.startsWith("/*") && !line.endsWith("*/")) {commentLine++;comment = true;} else if (line.startsWith("/*") && line.endsWith("*/")) {commentLine++;comment = false;} else if (line.matches(".+/\\*.*") && !line.endsWith("*/")) {commentLine++;normalLine++;if (findPair(line)) {comment = false;} else {comment = true;}} else if (line.matches(".+/\\*.*") && line.endsWith("*/")) {commentLine++;normalLine++;comment = false;} else {normalLine++;}}private static boolean findPair(String line) { // 查找一行中/*与*/是否成对出现int count1 = 0;int count2 = 0;Pattern p = Pattern.compile("/\\*");Matcher m = p.matcher(line);while (m.find()) {count1++;}p = Pattern.compile("\\*/");m = p.matcher(line);while (m.find()) {count2++;}return (count1 == count2);}}
最新博客地址请移步:http://blog.360chwl.net/detail/8a2390184d4ae930014d50db6b980005.html
- 利用java小工具-----统计项目代码量
- 代码量统计小工具V1.0
- 计算java 代码量的小工具
- [小工具]代码统计小工具编写
- 实现统计java程序代码的小工具
- 统计代码量 项目总结
- Java初学者:图书管理小工具代码
- 检查java代码的几个小工具
- SQL转Java代码小工具
- 笔记-Java代码中的小工具类
- 代码美化/统计/工程清理小工具CodeHelper
- 统计 apk 方法数和代码行数小工具
- Java代码量统计程序代码
- 代码小工具
- 小工具初始代码
- 统计单词个数小工具
- 统计 Xcode 项目总代码量
- vs2008统计项目代码量方法
- CX51 用户手册----NOMODC2 伪指令
- HTML5新功能
- OpenGL-键盘控制
- Android的组件设计
- Scopes in Rails 3
- 利用java小工具-----统计项目代码量
- Tomcat启动时出现IOException while loading persisted sessions: java.io.EOFException异常
- Ubuntu
- makefile
- JAVA和C++区别
- 分享一套帮助你优化开发web应用的jQuery插件集 - Vanity Toolset
- 用VisualSVN做项目版本控制
- Ajax通信步骤
- 浅谈云计算与数据中心计算