精华内容
下载资源
问答
  • git log --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'

    git log  --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'

    展开全文
  • 统计java行数和jar包中代码行数
    自己写了一个简单的小工具,统计一下指定项目路径下java行数和指定路径下jar包中.class 文件的代码行数。
    具体内容如下:
    1:统计指定目录下所有的*.java 文件的代码行数,文件为JavaTotal.java(可单独运行);
     
    
     
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.List;
    /**
     * 统计指定项目的目录下的*.java代码行数
     * @author aflyun
     * @date 2016.02.16
     * @version 1.0
     */
    public class JavaTotal {
    
    	//项目java文件所在目录
    	public static String javaPath = "D:/KuYuPrograms/tclshop/src/";
    	//统计代码行数
    	public static Integer countCode = 0;
    	
    	public static int runJavaTotal(){
    		try {
    			File filetxtPath = new File("D:/javaFileCount.txt");//输出要统计的文件信息
    			PrintWriter pw = new PrintWriter(new FileWriter(filetxtPath));
    			
    			List<File> list = total(javaPath);
    			for (File file : list) {
    				String javaName = file.getAbsolutePath().replace("\\", "/");
    				if(javaName.endsWith(".java")){
    					pw.println(javaName);
    				}
    			}
    			pw.println("总共java文件数量 :" + list.size());
    			pw.close();
    			System.err.println("java文件数量:"+list.size());
    			countJavaLine(list);
    			System.err.println("java中总代码行数:" + countCode);
    			
    		} catch (Exception e) {
    			// TODO: handle exception
    		}
    		
    		return countCode;
    	}
    	/**
    	 * 获取所有的文件
    	 * @param path 获取文件的路径
    	 * @return
    	 */
    	public static List<File> total(String path){
    		List<File> fileList = null;
    		try {
    			fileList = new ArrayList<File>();
    			File filePath = new File(path);
    			File[] files = filePath.listFiles();//listFiles能够获取当前文件夹下的所有文件和文件夹
    			for (File file : files) {
    				if(file.isFile() && file.getName().endsWith(".java")){
    					fileList.add(file);
    				}else {
    					fileList.addAll(fileList.size(), total(file.getPath()));
    				}
    			}
    		} catch (Exception e) {
    			// TODO: handle exception
    		}
    		
    		return fileList;
    	}
    	
    	/**
    	 * 统计项目中java代码的行数
    	 * @param listFile 文件的集合
    	 */
    	public static void countJavaLine(List<File> listFile){
    		try {
    			for (File file : listFile) {
    				if(file.getName().endsWith(".java")){
    					
    					FileReader fr = new FileReader(file);
    					BufferedReader br = new BufferedReader(fr);
    					String line = "";
    					while((line = br.readLine()) != null){
    						countCode ++;
    					}
    				}
    			}
    		} catch (Exception e) {
    			System.err.println("统计java代码行数出错!");
    		}
    		
    	}
    	
    //==========================================================================================//
    	public static void main(String[] args) throws IOException {
    
    		long start = System.nanoTime();
    		runJavaTotal();
    		long end = System.nanoTime();
    		System.out.print("cost: " + (end - start)/1e9 + " seconds");
    	}
    }
    </span>

    2:统计指定目录下所有的*.jar 包中*.class 文件的代码行数,文件为 JarTotal.java(可单独运行)

    package com.dufy.test;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.URL;
    import java.util.Enumeration;
    import java.util.HashSet;
    import java.util.Set;
    import java.util.jar.JarEntry;
    import java.util.jar.JarFile;
    /**
     * 统计指定路径下面jar包文件中所有*.class 文件的代码行数
     * @author aflyun
     * @date 2016.02.16
     * @version 1.0
     */
    public class JarTotal {
    
    	//jar包存放的仓库位置
    	public static String jarPath = "D:/KuYuPrograms/repository/com/aebiz"; 
    	//存放所有的jar的包路径和名称
    	public static Set<String> jarList = new HashSet<String>();
    	//统计jar包总代码行数
    	public static int countCode = 0;
    	
    	public static int runJarTotal() {
    		try {
    			File filetxtPath = new File("D:/jarFileCount.txt");//输出要统计的文件信息
    			PrintWriter pw = new PrintWriter(new FileWriter(filetxtPath));
    			File file = new File(jarPath);
    				findAllJarFiles(file);
    			for (String jarName : jarList) {
    				pw.println(jarName); //将jar文件写入txt中
    				Set<String> findAllJarClassfiles = findAllJarClassfiles(jarName);
    				for (String jarClassFileName : findAllJarClassfiles) {
    						countJarLine(jarName,jarClassFileName);
    				}
    			}
    			pw.println("总共jar文件数量 :" + jarList.size());
    			pw.close();
    			System.err.println("jar包文件数量 :  "+ jarList.size());
    			System.err.println("jar包中总代码行数 :  "+ countCode);
    			
    		} catch (Exception e) {
    			// TODO: handle exception
    		}
    		
    		return countCode;
    	}
    	
    	/**
    	 * 遍历获取所有的jar包文件路径和名称
    	 * @param dir 目标路径
    	 */
    	 public static void findAllJarFiles(File dir) {
    		 try {
    			 //获取当前文件夹下的所有文件和文件夹
    			 File[] files = dir.listFiles();
    			 for(int i = 0; i < files.length; i++){
    				 // System.out.println(fs[i].getAbsolutePath());
    				  String jspPath = files[i].getAbsolutePath().replace("\\", "/");
    				  if(jspPath.endsWith(".jar")){
    					  //System.out.println(jspPath);
    					  jarList.add(jspPath);
    				  }
    				  //如果是文件夹,递归
    				  if(files[i].isDirectory()){
    					  findAllJarFiles(files[i]);
    				  }
    				
    			 }
    		} catch (Exception e) {
    			System.err.println("获取所有的jar包路径和名称出错!");
    		}
    		
    	 }
    	 
    	/**
    	 * 获取jar包目录下所有的class文件
    	 * @param jarName jar包的路径和名称
    	 * @return  返回对应jar包下所有.class 文件的集合
    	 */
    	 public static Set<String> findAllJarClassfiles(String jarName){
    		//存放jar包下对应的文件路径和名称
    		Set<String> jarFileList = new HashSet<String>();
    		 try {
    			JarFile jarFile = new JarFile(jarName);
    			Enumeration<JarEntry> entries = jarFile.entries();
    			while(entries.hasMoreElements()){
    				JarEntry jarEntry = entries.nextElement();
    				String fileName = jarEntry.getName();
    				if(fileName.endsWith(".class")){
    					//System.out.println(fileName);
    					jarFileList.add(fileName);
    				}
    			}
    		} catch (IOException e) {
    			System.err.println("获取jar包下的所有class出错!");
    		}
    		 return jarFileList;
    	 }
    	 
    	/**
    	 * 构造URI/URL格式的文件路径<br/>
    	 * 统计所有jar包中所有class文件的代码行数
    	 * @param jarName	jar包的路径和名称
    	 * @param jarClassFileName	jar包下所有文件.class 文件的路径和名称
    	 * @throws	IOException
    	 */
    	 public static void countJarLine(String jarName,String jarClassFileName) {
    		try {
    			URL url = new URL("jar:file:/"+jarName+"!/"+jarClassFileName+""); 
    			//System.out.println(url); 
    			InputStream is=url.openStream(); 
    			BufferedReader br=new BufferedReader(new InputStreamReader(is));
    			String line = "";
    			while((line = br.readLine())!=null){
    				countCode ++;
    			}
    		} catch (Exception e) {
    			System.err.println("统计jar包总代码数出错!");
    		}
    	}
    	 
    //==========================================================================================//		
    	public static void main(String[] args) throws Exception {
    		long start = System.nanoTime();
    		runJarTotal();
    		long end = System.nanoTime();
    		System.out.print("cost: " + (end - start)/1e9 + " seconds");
    	}
    }
    
    

    3:调用1、2中的工具类,统计出 项目中指定路径下 *.java 和指定jar包中*.class 的总代码行数,文件为 CountTotalMain.java

    package com.dufy.test;
    
    /**
     * 统计项目中所有代码的行数<br/>
     * 	1: .java文件中代码<br/>
     * 	2: jar包中的文件代码
     * @author aflyun
     *
     */
    public class CountTotalMain {
    
    	public static void main(String[] args) {
    		long start = System.nanoTime();
    		
    		int runJavaTotal = JavaTotal.runJavaTotal();
    		int runJarTotal = JarTotal.runJarTotal();
    		System.out.println("java总代码: " + runJavaTotal +"----jar总代码: " + runJarTotal);
    		System.out.println("项目中总代码之和为 : " + (runJarTotal + runJavaTotal));
    		
    		long end = System.nanoTime();
    		System.out.println("cost: " + (end - start)/1e9 + " seconds");
    	}
    }
    
    


    展开全文
  • 问题来源,在14年的暑假的一次小项目当中遇到了一个这样的问题,要求统计C++代码的注释行数,有效代码行数代码注释公共行数,以及函数个。   下面稍微解释一下问题,   1)注释行数:指有注释的行...
    问题来源,在14年的暑假的一次小项目当中遇到了一个这样的问题,要求统计C++代码的注释行数,有效代码行数,代码注释公共行数,以及函数个数。 
    
     
    下面稍微解释一下问题,
     
    1)注释行数:指有注释的行,包括有代码和注释的公共行(如:3,4,15,22...)
     
    2)有效代码行:指有代码的行,包括有代码和注释的公共行(如:1,4,11,15,25....)
     
    3)代码注释公共行:指又有代码又有注释的行(如:4,15...)
     
    4)函数个数:这个不用说明了吧。
     
    以下为注释情况展示代码:
     
    复制代码
     1 #include <stdio.h>
     2 
     3 //follow is a common line
     4 void swap(char *p/* = NULL */)
     5 {
     6     printf("this is a function /*is not comments*/");
     7 }
     8 
     9 int main(void)
    10 {
    11     int a = 10;
    12     int b;
    13     char *p = NULL;
    14 
    15     swap(p);  //common line
    16     if (10 == a)
    17     {
    18         printf("is not function;//is not comments");
    19     }
    20     //pure comments/*no use*/
    21 
    22     /*a = 5;
    23     printf("not use\n");*/
    24 
    25     b = 3;/*i'm a comment*/ a = 5; /*comments line
    26     pure //comments line;"*/......"look there*/
    27     printf("test \" escape char");
    28     //and the follow,maybe affect the count of function
    29     if (*p == '{')
    30     {
    31         printf("the '{' is a question\n");
    32     }
    33     //
    34 
    35     return 0;
    36 }
    复制代码
    上面的这个代码片段,已经基本上展示了各种注释可能出现的情况,接着我们来分析一下注释出现的位置:
     
    一、“//”双斜杠注释
     
    1)可能出现在行头部,如:第3行;
     
    2)可能出现在行末尾,如:第15行;
     
    注意:第18行,第26行。第18行中,//位于双引号中,注释失效;第26行中,//位于/**/注释中,//失效。
     
    二、“/**/”斜杠星注释
     
    1)可能出现在函数参数里,如:第4行;
     
    2)可能注释一个段落,如:22,23行;
     
    3)也可能出现在代码中部,如25,26行那样的复杂注释;
     
    注意:第20行,第26行。第20行,/**/位于//注释中,失效。第26行,有一个*/位于“”中,*/失效。
     
    好了,位置分析完毕,下面分析一下如何设计算法:
     
    三、具体算法设计思路
     
    1)解决文件读取
     
    这里我们用c++文件读取,每次读取一行,将读取结果放到string变量里面,这样string变量尾部自动为'\0'。我们用于判断行尾部。
     
    2)双引号问题
     
    由于双引号里面的内容都是无效的,所以我们可以直接来个过滤双引号里面的内容。(具体实现见代码)
     
    3)单引号问题
     
    上面的展示代码里面也看到了,单引号里面的内容(如:if (ch == '{'))可能会影响函数个数的统计,所以我们需要过滤单引号。
     
    4)空行
     
    这个最简单,如果string为空就是空行。包括(\t\n\r' '等等,无效字符,都算空行)。
     
    5)“//”注释
     
    这个较为简单,遇到//就可以进行统计,同时该行也不需要继续遍历了,直接break;然后读取下一行。
     
    6)“/**/”注释
     
    较麻烦,我们这里用到了代码标记,注释标记,同时还设置了当遍历到行最尾部的时候,才进行行数统计,这样避免了一行被统计多次。(具体实现见代码)
     
    7)函数个数
     
    首先说一下统计思路,我们统计函数的时候,只是以大括号({})为统计标记。用栈来表示,遇到左括号,入栈;遇到右括号,弹出一个左括号。知道弹到栈空,函数个数+1,
     
    这样的话,就实现了只保留最外层那对{},里层的括号全部抵销。我们又想了一下,简化了一下,不用栈,直接用一个变量来表示括号个数,遇到左括号,++top;遇到右括号--top,直到top==0,也就相当于栈空,函数个数+1。
     
    其实如下代码的函数个数统计还有问题:
     
    示例:对于类、结构体、枚举体、全局数组,会被统计为一个函数。也就是说,那些在函数体外面的,但是又带有大括号({})的代码,都会被识别为函数。
     
    以下为实现代码:
     
    复制代码
      1 #include <iostream>
      2 #include <fstream>
      3 #include <string>
      4 using namespace std;
      5 
      6 int main(void)
      7 {
      8     string line="";
      9     ifstream ifs;
     10     ifs.open("Test.cpp");
     11     if (!ifs)
     12     {
     13         cout<<"文件打开失败"<<endl;
     14         exit(0);
     15     }
     16     //
     17     //标记:双引号 斜杠星   函数      代码        注释
     18     int bSyh = 0, bXgx = 0, bHs = -1, bCode = 0, bZs = 0;
     19     //   ""        ''        //     /*        {}
     20     /
     21     //个数:空行  注释    代码      公共     函数
     22     int i,nKh = 0, nZs = 0, nDm = 0, nGg = 0, nHs = 0;
     23     //
     24     while (!ifs.eof())
     25     {
     26         i = 0;
     27         getline(ifs,line);    //读取一行文件
     28         bCode = 0;            //该行没有代码
     29         bZs = 0;              //该行没有注释
     30         if (bXgx)             //bXgx 斜杠星注释标记
     31             bZs = 1;          //该行有注释
     32         //过滤无效符号 
     33         while (line[i] == ' ' || line[i] == '\t' || line[i] == '\r' || line[i] == '\n')
     34         {
     35             ++i;
     36         }
     37         //“以下为空行统计区域:开始”
     38         if (!bXgx && line[i] == '\0')  //空行
     39         {
     40             ++nKh;
     41             continue;
     42         }
     43         //“空行统计:结束”
     44         while (1)
     45         {
     46             //第一次遇到双引号              引号为非转义字符(\")
     47             if (!bSyh && line[i] == '\"' && ((i > 0 && line[i-1] != '\\') || (i == 0))) 
     48             {
     49                 ++i;
     50                 bSyh = 1;
     51                 continue;
     52             }
     53             //“正在进行双引号屏蔽....”
     54             if (bSyh)
     55             {
     56                 //“ \”结束”
     57                 if (line[i] == '\"' && ((i > 0 && line[i-1] != '\\') || (i == 0)))
     58                 {
     59                     bSyh = 0;
     60                 }
     61                 else if (line[i] == '\0')  //行末尾
     62                 {
     63                     if (bZs)        
     64                         ++nZs;       
     65                     if (bCode)
     66                         ++nDm;      
     67                     if (bZs && bCode)
     68                         ++nGg;
     69                     break;
     70                 }
     71                 ++i;
     72                 continue;
     73             }
     74             //遇到单引号(避免'{','}'),且非转义字符\',连续跳过3个(第二个'后位置)
     75             if (line[i] == '\'' && ((i > 0 && line[i-1] != '\\') || (i == 0)))
     76             {
     77                 i += 3;
     78                 continue;
     79             }
     80             //“//注释行”
     81             if (!bXgx && line[i] == '/' && line[i+1] == '/')  
     82             {
     83                 if (bCode)     //“前有代码,混合注释行”
     84                 {
     85                     ++nZs;     //注释
     86                     ++nDm;     //代码
     87                     ++nGg;     //公共
     88                 }
     89                 else          //纯注释行
     90                 { 
     91                     ++nZs;
     92                 }
     93                 break;  //跳出当前行(即,内while循环),“//”后代码不做判断
     94             }
     95             //“/*注释开始”
     96             if (!bXgx && line[i] == '/' && line[i+1] == '*')
     97             {
     98                 i += 2;        //跳过/*符号
     99                 bXgx = 1;      //标记“/*”开始
    100                 bZs = 1;       //“发现注释”
    101                 continue;
    102             }
    103             //“正在进行多行注释....”
    104             if (bXgx)
    105             {
    106                 //“*/注释结束”
    107                 if (line[i] == '*' && line[i+1] == '/')
    108                 {
    109                     ++i;     //“跳过*/”注意后有一个 ++i;
    110                     bXgx = 0;
    111                 }
    112                 else if (line[i] == '\0')  //行末尾
    113                 {
    114                     if (bCode)       //注释前有代码,即“混合行”
    115                     {
    116                         ++nDm;
    117                         ++nZs;       
    118                         ++nGg;
    119                     }
    120                     else
    121                     {
    122                         ++nZs;       //“纯注释”
    123                     }
    124                     break;
    125                 }
    126                 ++i;
    127                 continue;
    128             }
    129             if (line[i] == '\0')
    130             {
    131                 if (bZs)        
    132                     ++nZs;       
    133                 if (bCode)
    134                     ++nDm;      
    135                 if (bZs && bCode)
    136                     ++nGg;
    137                 break;
    138             }
    139             //“以下全是有效代码区域”
    140             //“函数个数统计区域:开始”
    141             if (line[i] == '{')      //记录函数左括号
    142             {
    143                 ++bHs;
    144             }
    145             else if (line[i] == '}') //遇到函数右括号
    146             {
    147                 if (bHs == 0)        //“发现一个函数”
    148                     ++nHs;
    149                 --bHs;
    150             }
    151             //“函数统计:结束”
    152             ++i;
    153             bCode = 1;    //能执行到这里,说明该行存在代码
    154         }
    155     }
    156     
    157     cout<<"注释: "<<nZs<<endl;
    158     cout<<"代码: "<<nDm<<endl;
    159     cout<<"空行: "<<nKh<<endl;
    160     cout<<"公共: "<<nGg<<endl;
    161     cout<<"函数: "<<nHs<<endl;
    162 
    163     return 0;
    164 }
    展开全文
  • 用于计算源代码行数工作,支持java、js、html、C、C#啊等等等等等等等等源码的函数计算,以及工作量计算等。
  • 代码变更行数统计

    2019-07-30 11:54:36
    1.最近5次提交代码变更行数: 执行 git log -5 --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs...

    1.最近5次提交代码变更行数:

    执行
    git log  -5 --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'
     
     
    统计结果
    added lines: 19, removed lines: 5, total lines: 14
    

    2.统计指定人员zhangdaxian的代码变更:

    执行
    git log --author="zhangdaxian" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'
      
    统计结果
    added lines: 10532, removed lines: 3703, total lines: 6829
    

    3.统计20180720-20180804这段时间内代码的变更行数

    执行
    git log --after=2018-07-20 --before=2018-08-04 --pretty=tformat: --numstat| awk '{ add += $1 ; subs += $2 ; loc += $1 + $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }'
      
    统计结果
    added lines: 5482 removed lines : 2635 total lines: 8117
    
    展开全文
  • 1.此程序在VS2005环境编译生成,是release版。 2.功能为:统计指定目录下源代码行数(包括空行,//注释行,/**/注释行,#if0 #endif注释行以及有效的代码的总行!!!!!
  • ①统计指定代码的总行 ②统计每个代码单独的行数 ③自定义设置存储路径 设计思路: 将文件转化为txt文档,对txt文档统计行数。 非GUI代码: import shutil import os path = "C:\\Users\\dell\\...
  • cloc - 编统计代码行数。能够统计空行、注释行、多种编程语言源代码的物理行。
  • 统计java代码行数

    2016-08-01 12:25:00
    统计java代码中的有效代码行数,空行,和注释行数,使用java语言实现下面是我的代码,仅供参考(正常的代码应该都能统计出来的)import java.io.BufferedReader; import java.io.FileNotFoundException; import java...
  • CVS操作日志统计,可按开发人员分别统计昨天、本周、上周、前12个月,以及全部时间内的修改行数(增加行数、删除行数)。统计结果生成html文件。 特别是可以统计出CVS文件第一个版本的行数。网上找不到类似工具(没...
  • 统计工程的文件: find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.h" -or -name "*.rss" ...统计工程整体代码行数: find -name "*.c" -exec wc -l "{}" \; | awk '{s+=$1}
  • 我们经常想要统计项目的代码行数,但是如果想统计功能比较完善可能就不是那么简单了, 今天我们来看一下如何用python来实现一个代码行统计工具。思路:首先获取所有文件,然后统计每个文件中代码行数,最后将行数...
  • 用git统计代码提交行数

    万次阅读 2018-07-23 09:41:57
    早上收到pmo邮件,要求统计某个时间范围内代码提交行数,一开始是懵逼的,不只如何下手,后来想到git这么强大的工具,这点小事应该能做到,于是乎搜索了一下,命令如下: git log --since ==2017-04-10 --until=...
  • 代码行数统计工具,特别好用,可以统计代码的注释行数、空行代码有效行数。值得拥有。 代码行数统计工具,特别好用,可以统计代码的注释行数、空行代码有效行数。值得拥有。
  • Android Studio 是没有提提供统计代码全部行数的功能的,但是对于开发者来说,这个功能确实必备的,Statistic统计代码行数非常方便,也很详细。 安装完成后,File -> Settings ->Tools 会新增一个“Statistic...
  • 今天被问到项目的代码量及代码行数,由于项目代码量还挺多,第一时间想到idea有没有插件可以统计,经过搜索,还真有,当然也可以自己写代码实现。 以下介绍Statistic的安装及使用。 1、在IDEA左上角点击File->...
  • 我们经常想要统计项目的代码行数,但是如果想统计功能比较完善可能就不是那么简单了, 今天我们来看一下如何用python来实现一个代码行统计工具。思路:首先获取所有文件,然后统计每个文件中代码行数,最后将行数...
  • 快速 统计SVN 代码 提交行数

    万次阅读 2018-04-26 14:50:01
    背景:需要统计一段时间内上传到SVN服务器的代码行数,SVN没有自带功能,不过可以通过使用一个Java工具:satasvn.jar来快速完成统计 前期准备: 1. 确认svn版本安装的时候提供了命令行功能:测试方法,进入cmd窗口...
  • 使用Java预编编写 统计文件夹中含有Java文件的源代码行数
  • 代码行数统计工具

    2018-07-19 17:23:37
    代码行数统计工具,所有项目通用,代码行数统计工具,所有项目通用
  • 使用git命令统计代码提交行数

    千次阅读 2019-10-10 09:07:15
    我们公司每个月会统计每个人千行bug率,所以,对统计代码行数研究了一下 进行以下准备: 1:进行你eclipse或者idea当前工程目录下 2:本地安装了git管理工具 3:在工程目录下右键选择【Git Bash Here】进入...
  • 规定:一行上既有代码又有注释算代码行数(例如:int a = 1; //注释); Java源代码文件(要统计的源代码文件) package cn.edu.ccit.fwh; public class Test { public static void main(String[] args) { ...
  • 代码行统计小工具,支持递归查询。统计内容包括:代码行数、注释行数、空行、总行等。网上下载的,与大家分享。来源查看程序,关于
  • 辛辛苦苦撸了一堆代码,如何统计呢? 一、如果在git仓库,统计各成员代码量 在本地git工程目录下,输入如下命令: git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --...
  • 一款基于beyondCompare的代码差异行数统计工具 原理是,使用命令行调用beyond生成差异行报告,分析汇总扫描报告 也可以进行代码行数统计,如果遇到报错,关闭报错窗口,会自动重新计算。 当BaseDirPath为空时,可以...
  • diffcount统计两个版本之间代码变更行数
  • 代码分析工具 这个小工具可以分析代码里面没有用到的图片资源文件,从而达到精简图片的目的,可以用于Flutter /小程序 可以统计代码行数,字符
  • 主要介绍了shell 命令统计代码行数的简单代码,文中给大家提到了统计行数、字符、字节的shell脚本,需要的朋友可以参考下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 210,455
精华内容 84,182
关键字:

代码怎么数行数