项目代码行数统计器,帮助你统计项目一共有多少行代码
项目代码行数统计器,帮助你统计项目一共有多少行代码
abcijkxyz 发表于2年前
项目代码行数统计器,帮助你统计项目一共有多少行代码
  • 发表于 2年前
  • 阅读 6
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

记得以前有位大师说,一个程序员如果没有写满1,000,000行代码,那么不是一个成熟的程序员.  

  1. /** 
  2.  
  3.  * codelinesstatistic 2008-6-20 TangRen 
  4.  
  5.  * Copyright www.tonydev.cn 2008 
  6.  
  7.  */  
  8.   
  9. package cn.javadr.goodlet.codelinesstatistic;  
  10.   
  11.   
  12.   
  13. import java.io.BufferedReader;  
  14.   
  15. import java.io.File;  
  16.   
  17. import java.io.FileReader;  
  18.   
  19. import java.io.IOException;  
  20.   
  21.   
  22.   
  23. /** 
  24.  
  25.  * @author Tang Ren 
  26.  
  27.  * @email : <a href="mailto:tangren1206@163.com">tangren1206@163.com</a> 
  28.  
  29.  *  
  30.  
  31.  * 代码行数统计器 
  32.  
  33.  */  
  34.   
  35. public class CodeLinesStatistic {  
  36.   
  37.   
  38.   
  39.     private static long sums = 0;  
  40.   
  41.   
  42.   
  43.     private static String suffixs[];  
  44.   
  45.   
  46.   
  47.     private static String target;  
  48.   
  49.   
  50.   
  51.     /** buffer flush 的最大值 * */  
  52.   
  53.     private static int FLUSH_FLAG = 1024 * 64;  
  54.   
  55.   
  56.   
  57.     private static StringBuffer statistics = new StringBuffer();  
  58.   
  59.   
  60.   
  61.     /** 
  62.  
  63.      * @param args 
  64.  
  65.      */  
  66.   
  67.     public static void main(String... args) throws IOException {  
  68.   
  69.         // 这里模拟命令行下的参数进行测试   
  70.   
  71.         args = new String[] { "F:/Dev/alisoft_space/ExtSysDataImportTask"// 这里是项目的根目录   
  72.   
  73.                 "java""xml""properties" }; // 这里是统计文件的后缀名   
  74.   
  75.   
  76.   
  77.         long startTimes = System.currentTimeMillis();  
  78.   
  79.         if (args.length > 1)  
  80.   
  81.             suffixs = new String[args.length - 1];  
  82.   
  83.         else {  
  84.   
  85.             System.out  
  86.   
  87.                     .println("As that : targetLocation , fileSuffix , fileSuffix . . .");  
  88.   
  89.             return;  
  90.   
  91.         }  
  92.   
  93.         for (int i = 0; i < args.length; i++) {  
  94.   
  95.             if (i == 0) {  
  96.   
  97.                 target = args[i];  
  98.   
  99.             } else {  
  100.   
  101.                 suffixs[i - 1] = args[i];  
  102.   
  103.             }  
  104.   
  105.         }  
  106.   
  107.         File targetFile = new File(target);  
  108.   
  109.         if (targetFile.exists()) {  
  110.   
  111.             statistic(targetFile);  
  112.   
  113.             System.out.print(statistics.toString());  
  114.   
  115.             System.out.println("All completement. U write [" + sums  
  116.   
  117.                     + "] lines code. did great job!");  
  118.   
  119.         } else {  
  120.   
  121.             System.out.println("File or Dir not exist : " + target);  
  122.   
  123.         }  
  124.   
  125.         System.out.println("Total times "  
  126.   
  127.                 + (System.currentTimeMillis() - startTimes) + " ms");  
  128.   
  129.     }  
  130.   
  131.   
  132.   
  133.     /** 
  134.  
  135.      * 深度优先,统计文件行数 
  136.  
  137.      *  
  138.  
  139.      * @param file 
  140.  
  141.      * @throws IOException 
  142.  
  143.      */  
  144.   
  145.     private static void statistic(File file) throws IOException {  
  146.   
  147.         if (file.isDirectory()) {  
  148.   
  149.             File[] files = file.listFiles();  
  150.   
  151.             for (int i = 0; i < files.length; i++) {  
  152.   
  153.                 statistic(files[i]);  
  154.   
  155.             }  
  156.   
  157.         }  
  158.   
  159.         if (file.isFile()) {  
  160.   
  161.             if (isMatchSuffixs(file)) {  
  162.   
  163.                 sums += countFileTextLines(file);  
  164.   
  165.             }  
  166.   
  167.         }  
  168.   
  169.     }  
  170.   
  171.   
  172.   
  173.     /** 
  174.  
  175.      * 检查文件是否是制定后缀的文件 
  176.  
  177.      *  
  178.  
  179.      * @param file 
  180.  
  181.      * @return 
  182.  
  183.      */  
  184.   
  185.     private static boolean isMatchSuffixs(File file) {  
  186.   
  187.         String fileName = file.getName();  
  188.   
  189.         if (fileName.indexOf(".") != -1) {  
  190.   
  191.             String extName = fileName.substring(fileName.indexOf(".") + 1);  
  192.   
  193.             for (int i = 0; i < suffixs.length; i++) {  
  194.   
  195.                 if (suffixs[i].equals(extName)) {  
  196.   
  197.                     return true;  
  198.   
  199.                 }  
  200.   
  201.             }  
  202.   
  203.         }  
  204.   
  205.         return false;  
  206.   
  207.     }  
  208.   
  209.   
  210.   
  211.     /** 
  212.  
  213.      * 统计文件行数 
  214.  
  215.      *  
  216.  
  217.      * @param file 
  218.  
  219.      * @return 
  220.  
  221.      * @throws IOException 
  222.  
  223.      */  
  224.   
  225.     private static long countFileTextLines(File file) throws IOException {  
  226.   
  227.         long result = 0;  
  228.   
  229.         if (statistics.length() > FLUSH_FLAG) {  
  230.   
  231.             System.out.print(statistics.toString());  
  232.   
  233.             statistics = new StringBuffer();  
  234.   
  235.         }  
  236.   
  237.         statistics.append("Counting in ").append(file.getAbsolutePath());  
  238.   
  239.         BufferedReader br = new BufferedReader(new FileReader(file));  
  240.   
  241.         while (br.readLine() != null)  
  242.   
  243.             result++;  
  244.   
  245.         br.close();  
  246.   
  247.         statistics.append("   -  ").append(result).append("/n");  
  248.   
  249.         return result;  
  250.   
  251.     }  
  252.   
  253. }  

刚刚断网, 无聊间写了一个统计一个项目中代码行数的小应用.

因为记得以前有位大师说, 没写过超过1,000,000行代码的程序员不是经验丰富的程序员.

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 59
博文 6195
码字总数 1876
×
abcijkxyz
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: