编写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.
 * 邮箱:[email protected]
 */
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.
 * 邮箱:[email protected]
 */
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.
 * 邮箱:[email protected]
 */
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脚本统计工程代码总行数


相似文章:

时间: 2024-10-11 07:26:47

编写Java脚本统计工程代码总行数的相关文章

vs2010统计项目代码总行数

按CTRL+SHIFT+F (Find in files),勾上支持正则表达式,然后输入搜索内容: ^:b*[^:b#/]+.*$ 找到最后一行就是结果 vs2010统计项目代码总行数

一行命令统计iOS工程代码总行数

我们有时候想要统计一下我们的工程的总代码行数,来获取一些成就感或者作为别的用图,这里就介绍一些如何便捷地统计代码的行数,非常简单,方法如下: 1. 打开终端: 2. 通过cd命令到达我们的工程文件,这里注意如果要避免统计引用的第三方库的代码量,我们就要进一步进到我们自己写的代码文件中去,一般是一个与工程文件同名的文件: 3. 统计代码行数: 如果想列出每个文件的行数,输入命令: find . -name "*.m" -or -name "*.h" -or -name

VS 2017 统计项目代码总行数

编辑 → 查找和替换 → 在文件中的查找,打开查找窗口 填入正则表达式  ^b*[^:b#/]+.*$ 查找范围选“整个解决方案”,勾选上“使用正则表达式” 如果要限制文件类型,就填上要查找的文件类型,然后点击查找全部即可 原文地址:https://www.cnblogs.com/nicopoiduang/p/10913558.html

python统计代码总行数(代码行、空行、注释行)

我们在工作或学习代码的过程中,经常会想知道自己写了多少行代码,今天在项目环境写了个脚本统计了项目代码的数量. 功能: 1.统计代码总行数 2.统计空行数 3.统计注释行数 # coding=utf-8 import os #定义代码所在的目录 base_path = '/home/yhl/workspace/xtp_test' #在指定目录下统计所有的py文件,以列表形式返回 def collect_files(dir): filelist = [] for parent,dirnames,fi

Java关于条件判断练习--统计一个src文件下的所有.java文件内的代码行数(注释行、空白行不统计在内)

要求:统计一个src文件下的所有.java文件内的代码行数(注释行.空白行不统计在内) 分析:先封装一个静态方法用于统计确定的.java文件的有效代码行数.使用字符缓冲流读取文件,首先判断是否是块注释开头,接着判断是否是块注释结尾,再判断是否是单行注释或者空白行,若都不是则是有效代码,统计行数+1. 对于文件夹路径,采用递归的方法判断子条目是文件还是文件夹,是文件就调用静态统计方法.源代码: public class CalculateRow { public static void main(

黑马程序员——综合练习 计算代码总行数

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 计算代码总行数 思路:1.判断给出的路径是文件还是文件夹 2.如果是文件,用\n把文件分割成一个数组,计算数组元素个数就可以得出文件总行数 如果是文件夹,获得文件夹的所有内容,包括文件和文件夹,然后有递归算出文件夹所有代码的总行数 考察内容:NSString.NSArray.NSFileManager的使用 代码演示: #import <Foundation/Foundation.h> NS

黑马程序员___综合练习 计算代码总行数

-Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 计算代码总行数 思路:1.判断给出的路径是文件还是文件夹 2.如果是文件,用\n把文件分割成一个数组,计算数组元素个数就可以得出文件总行数 如果是文件夹,获得文件夹的所有内容,包括文件和文件夹,然后有递归算出文件夹所有代码的总行数 考察内容:NSString.NSArray.NSFileManager的使用 代码演示: #import <Foundation/Foundation.h> NSUInte

LoadRunner12的安装,如何添加jar包编写java脚本及相关配置信息

一.LR12的下载与安装 LR12下载地址:http://pan.baidu.com/s/1nvo0yqH 安装步骤: 1.运行下载好的HP_LoadRunner_12.02_Community_Edition_T7177-15058.exe 进入安装准备阶段 2.安装好提示的必备程序之后才能安装HP LoadRunner(lR的安装需要其他环境的支撑) 3.按照安装向导继续安装,注:强烈建议安装在默认路径下,可避免某些使用异常 4.取消HP身份验证设置,取消默认勾选的"指定LoadRunner

iOS开发 统计xcode代码行数

如果要统计ios开发代码,包括头文件的,终端命令进入项目目录下,命令如下 find . -name "*.m" -or -name "*.h" -or -name "*.xib" -or -name "*.c" |xargs wc -l 列出每个文件的行数 find . -name "*.m" -or -name "*.h" -or -name "*.xib" -or