在新公司工作将近一年了,一直独自一人负责服务端集群的运维和代码的编写。不知不觉从一个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脚本统计工程代码总行数的更多相关文章

  1. 我的Android进阶之旅------>Android Studio使用statistics插件统计项目代码总行数

    今天公司说要统计一下项目总共了多少行代码,于是上网看了一下使用statistic插件可以统计代码总行数,下面给大家分享一下 ! 1.下载[statistic]插件 首先当然要把名为[statistic ...

  2. vs2010统计项目代码总行数

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

  3. VS 2017 统计项目代码总行数

    编辑 → 查找和替换 → 在文件中的查找,打开查找窗口 填入正则表达式  ^b*[^:b#/]+.*$ 查找范围选“整个解决方案”,勾选上“使用正则表达式” 如果要限制文件类型,就填上要查找的文件类型 ...

  4. 基于Gitlab统计代码行--统计所有仓库、所有提交人的代码总行数(新增加-删除)

    公司绩效考核要求,统计GITLAB仓库所有人提示有效代码行业 脚本1: 统计所有仓库.所有提交人的代码总行数(新增加-删除) 脚本2: 统计所有仓库.所有提交人的代码提交汇总与删除汇总 脚本3: 统计 ...

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

    我们在工作或学习代码的过程中,经常会想知道自己写了多少行代码,今天在项目环境写了个脚本统计了项目代码的数量. 功能: 1.统计代码总行数 2.统计空行数 3.统计注释行数 # coding=utf-8 ...

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

    要求:统计一个src文件下的所有.java文件内的代码行数(注释行.空白行不统计在内) 分析:先封装一个静态方法用于统计确定的.java文件的有效代码行数.使用字符缓冲流读取文件,首先判断是否是块注释 ...

  7. iOS 统计App 的代码总行数

    打开Terminal,cd 到项目的根目录下,输入以下命令 find . -name "*.m" -or -name "*.mm" -or -name &quo ...

  8. 使用PYTHON统计项目代码行数

    目录 一 使用PYTHON统计项目代码行数 二 应用实例 注:原创不易,转载请务必注明原作者和出处,感谢支持! 一 使用PYTHON统计项目代码行数 遇到一个非常小的需求:统计一个项目里头的各类源代码 ...

  9. Python-统计svn代码总行数

    1 #!/bin/bash/python 2 # -*-coding:utf-8-*- 3 #svn统计url代码行数脚本,过滤空行,不过滤注释. 4 5 import subprocess,os,s ...

随机推荐

  1. 菜鸟运维笔记:安装与配置Apacheserver

    前几天在在阿里花了49.5买了一个月的主机. 试着好用再续费吧. 地域:青岛 可用区:青岛可用区A CPU:1核 内存:512MB 带宽:1Mbps 操作系统:CentOS 6.5 64位 云盾:是 ...

  2. 【bzoj2282】[Sdoi2011]消防

    两次bfs可得直径,答案一定不会小于所有点到直径的距离最大值,只要把直径上的边权设为0,任选直径上一点bfs可得将最大值作为二分下界,二分直径左右端点的舍弃部分 #include<algorit ...

  3. 【bzoj1260】[CQOI2007]涂色paint

    题意:就是说一开始一个序列是空的,然后每次可以将连续的一段染成同一颜色,问多少次才能到目标状态. 一开始想的是二分,然后题解DP... f[i][j]表示区间[i,j]需要染色多少次 首先初始状态是f ...

  4. 单独编译framework【转】

    本文转载自:http://blog.csdn.net/u011168565/article/details/53782325 参考文章: http://bbs.csdn.net/topics/3701 ...

  5. Array.Copy vs Buffer.BlockCopy

    http://stackoverflow.com/questions/1389821/array-copy-vs-buffer-blockcopy Since the parameters to Bu ...

  6. 第十周 Leetcode 546. Remove Boxes (HARD) 记忆化搜索

    Leetcode546 给定一个整数序列,每次删除其中连续相等的子序列,得分为序列长度的平方 求最高得分. dp方程如下: memo[l][r][k] = max(memo[l][r][k], dfs ...

  7. Java多线程 -- 正确使用Volatile变量

    Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”:与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少, ...

  8. JavaScript 解析读取XML文档 实例代码(转)

    JavaScript解析读取XML文件,主要就是加载并解析XML文件,然后就可以测试解析的XML文件的内容,打印输出来. 在线演示:http://demo.jb51.net/js/2012/readx ...

  9. 【172】outlook邮箱设置

    参考:outlook 2013设置 参考:Outlook设置hotmail邮箱POP3和SMTP服务器 注意

  10. bzoj 1047: [HAOI2007]理想的正方形【单调队列】

    没有复杂结构甚至不长但是写起来就很想死的代码类型 原理非常简单,就是用先用单调队列处理出mn1[i][j]表示i行的j到j+k-1列的最小值,mx1[i][j]表示i行的j到j+k-1列的最大值 然后 ...