编写Java脚本统计工程代码总行数
在新公司工作将近一年了,一直独自一人负责服务端集群的运维和代码的编写。不知不觉从一个Project发展到了七八个Project。 看着越来越多的代码,今天突然想统计一下一共写了多少代码。【这里只统计完全由自己编写的代码,因为项目是基于Springboot的,所以直接统计 src目录下所有文件的行数即可】
首先,编写几个工具类。
FolderFind.java
import java.io.File; import java.util.ArrayList; import java.util.List; /** * Created by 杨小龙 on 2016-08-05. * 邮箱:1172875805@qq.com */ public class FolderFind { //列出工程文件内的其他项目,使用match参数过滤工程名 public static List<String> listFolder(String path,String match){ File file = new File(path); List<String> re = new ArrayList<String>(); if(file.isDirectory()){ String[] list = file.list(); if(list!=null){ for(String item:list){ if (item.contains(match)){ re.add(path+item); } } } } return re; } //列出某一个目录下,所有的文件。 public static List<String> listFile(String path){ File file = new File(path); List<String> re = new ArrayList<String>(); if(file.isDirectory()){ File filelist[] = file.listFiles(); if(filelist!=null){ for(File item:filelist){ if(item.isDirectory()){ List<String> temp = listFile(item.getPath()); re.addAll(temp); }else{ re.add(item.getPath()); } } } } return re; } }
CountLine.java
import java.io.File; import java.io.FileReader; import java.io.LineNumberReader; /** * Created by 杨小龙 on 2016-08-05. * 邮箱:1172875805@qq.com */ public class CountLine { public static int countFileLineNum(String path){ File file = new File(path); if(file.isFile()){ try{ FileReader in = new FileReader(path); LineNumberReader reader = new LineNumberReader(in); //int num = reader.getLineNumber(); String strLine = null; int num = 0; while ((strLine = reader.readLine()) != null) { num++; } reader.close(); in.close(); return num; }catch (Exception e){ e.printStackTrace(); } } return 0; } }
Main函数所在文件:Tongji.java
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by 杨小龙 on 2016-08-05. * 邮箱:1172875805@qq.com */ public class Tongji { public static void main(String[] args) { List<String> fileList = FolderFind.listFolder("../","yoko"); Map<String,Integer> re = new HashMap<String, Integer>(); int all=0; for(String item:fileList){ List<String> files = new ArrayList<String>(); if(item.contains("yoko-config") || item.contains("config-data")){ files = FolderFind.listFile(item+"\\"); }else{ files = FolderFind.listFile(item+"\\src\\"); } int num=0; for(String item2:files){ // System.out.println(item2); num = num + CountLine.countFileLineNum(item2); } all = all + num; re.put(item,num); System.out.println("工程【"+item+"】###"+num+"行"); } System.out.println("总行数:"+all); } }
运行后,该脚本统计了我ItellIJ工程目录下,携带"yoko"字符串的工程,运行结果如下图所示:
一 年左右的时间,竟然写了两百多万行。我自己都被自己震惊了……整天特别累,虽然写了很多代码,但是慢慢的我意识到,从生手到熟练后,更重要的是代码的质量 和算法的突破。以后将推掉这些基础性的工作,腾出更多的时间去多读书,研究研究理论性的东西。不能一直都在写一样的代码。
原文地址:编写Java脚本统计工程代码总行数
本文是作者原创内容,转载请注明出处。来源网址:https://www.coderbbb.com