统计java项目代码量,项目代码行数统计-java种统计

项目代码行数统计--java类统计

简易版的代码行统计工具类

import java.io.File;

import java.io.FileReader;

import java.io.IOException;

import java.io.LineNumberReader;

import org.apache.commons.lang.StringUtils;

public class ProjectCountLine {

private static final String JAVA_FILE_SUF = "java";

private static final String CSS_FILE_SUF = "css";

private static final String JS_FILE_SUF = "js";

private static final String JSP_FILE_SUF = "jsp";

private static final String HTML_FILE_SUF = "html";

private static final String PROPERTIES_FILE_SUF = "properties";

private static final String VM_FILE_SUF = "vm";

// 项目的跟目录

private File rootFile = null;

// 项目的行数

private long count = 0L;

/**

* 入口方法

*

* @param path

* 项目的根目录路径

* @return

* @throws IOException

* @see [类、类#方法、类#成员]

*/

public long service(String path) throws IOException {

boolean flag = checkPath(path);

if (flag)

countFilesLine(rootFile);

return count;

}

/**

* 检查文件是否是需要统计的文件类型

*

* @param fileName

* 文件的名称

* @return true:文件为需要统计的文件; false:文件为不需要统计的文件

* @see [类、类#方法、类#成员]

*/

private boolean isCountFileType(String fileName) {

if (StringUtils.isBlank(fileName))

return false;

if (fileName.endsWith(JAVA_FILE_SUF) || fileName.endsWith(CSS_FILE_SUF)

|| fileName.endsWith(JS_FILE_SUF)

|| fileName.endsWith(JSP_FILE_SUF)

|| fileName.endsWith(HTML_FILE_SUF)

|| fileName.endsWith(PROPERTIES_FILE_SUF)

|| fileName.endsWith(VM_FILE_SUF))

return true;

return false;

}

/**

* 检查项目的根路径是否正确

*

* @param path

* 项目路径

* @return true:传入的路径是正确的; false:传入的路径不正确

* @see [类、类#方法、类#成员]

*/

private boolean checkPath(String path) {

if (StringUtils.isBlank(path))

return false;

rootFile = new File(path);

if (!rootFile.exists() && !rootFile.isDirectory())

return false;

return true;

}

/**

* 统计指定文件下的所包含的指定格式的文件的行数

*

* @param file

* 指定文件

* @throws IOException

* 文件不存在时抛出IO异常

* @see [类、类#方法、类#成员]

*/

private void countFilesLine(File file) throws IOException {

File[] files = file.listFiles();

if (null == files)

return;

for (int i = 0; i < files.length; i++) {

File tempFile = files[i];

String fileName = tempFile.getName();

if (fileName.endsWith("svn"))

continue;

if (tempFile.isFile()) {

if (isCountFileType(fileName)) {

LineNumberReader linReader = new LineNumberReader(

new FileReader(tempFile));

linReader.skip(Long.MAX_VALUE);

count += linReader.getLineNumber() + 1;

}

} else {

// 当前为File目录,则进行递归

countFilesLine(tempFile);

}

}

}

public static void main(String[] args) {

ProjectCountLine countLine = new ProjectCountLine();

try {

long count = countLine.service("E:\\Demo\\java\\eclipse\\afk");

System.out.println(count);

} catch (IOException e) {

e.printStackTrace();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值