`
dongguoh
  • 浏览: 70708 次
  • 性别: Icon_minigender_1
  • 来自: 山水之乡
社区版块
存档分类
最新评论

统计某目录下所有的java文件有效代码的行数

    博客分类:
  • JAVA
阅读更多
这个代码的功能是统计某个目录下的所有的java文件中的代码的行数
用到啦递归,还有少量的正则表达示,本来想看一下swing做一下图形界面
好看一些,但是自己方向不往那方面发展,还是算啦。写个中心的出来就行啦
有兴趣的可以看一下
java 代码
  1. import java.io.File;   
  2. import java.io.FileNotFoundException;   
  3. import java.io.BufferedReader;   
  4. import java.io.FileReader;   
  5. import java.io.IOException;   
  6.   
  7.   
  8. public class CountCodeLines   
  9. {   
  10.     static int codeLines=0;   
  11.     static int whiteLines=0;   
  12.     static int commentLines=0;   
  13.     static int tatolLines=0;   
  14.     static boolean bComment=false;   
  15.     public static void main(String[] args)    
  16.     {   
  17.         StringBuffer pathName=new StringBuffer("H:\\spring-framework-2.0.6\\src\\org\\springframework");   
  18.         ComputeDirectoryAndFiles(pathName,0);   
  19.         System.out.println("Code Lines : "+(codeLines=tatolLines-commentLines-whiteLines));   
  20.         System.out.println("White Lines : "+whiteLines);   
  21.         System.out.println("Comment Lines : "+commentLines);   
  22.   
  23.     }   
  24.   
  25.     public static void ComputeDirectoryAndFiles(StringBuffer pathName,int level){   
  26.         File directory=new File(pathName.toString());   
  27.         File[] files=directory.listFiles();   
  28.         String prefix="";   
  29.         for(int i=0;i<level;i++)   
  30.         {   
  31.             prefix+="** ";   
  32.         }   
  33.         if(directory.isDirectory()){   
  34.             for(int i=0;i<files.length;i++)   
  35.             {      
  36.                 if(files[i].isFile()&& files[i].getName().matches("^[a-zA-Z[^0-9]]\\w*.java$"))   
  37.                 {   
  38.                        
  39.                     computeLines(files[i]);   
  40.                 }   
  41.                 if(files[i].isDirectory())   
  42.                 {                  
  43.                        
  44.                     pathName.append("/"+files[i].getName());   
  45.                     level++;   
  46.                     ComputeDirectoryAndFiles(pathName,level);   
  47.                     int start=pathName.toString().length()-files[i].getName().length()-1;   
  48.                     int end=pathName.toString().length();   
  49.                     pathName.delete(start,end);                    
  50.                        
  51.                     level--;   
  52.                 }   
  53.             }   
  54.         }   
  55.     }   
  56.     public static void computeLines(File file)   
  57.     {      
  58.         BufferedReader bf=null;   
  59.            
  60.         try  
  61.         {   
  62.             bf=new BufferedReader(new FileReader(file));   
  63.             String lineStr="";   
  64.             while((lineStr=bf.readLine())!=null)   
  65.             {   
  66.                 //总行数   
  67.                 tatolLines++;   
  68.                 //计算空行   
  69.                 whiteLines(lineStr);   
  70.                 //统计代码行数   
  71.                 commendLines(lineStr);   
  72.                 //计算代码的行数   
  73.                 //codeLines(lineStr);   
  74.             }   
  75.         }   
  76.         catch (FileNotFoundException e)   
  77.         {   
  78.             System.out.println("文件没有找到");   
  79.         }catch(IOException ee)   
  80.         {   
  81.             System.out.println("输入输出异常 ");   
  82.         }finally  
  83.         {   
  84.             if(bf!=null)   
  85.             {   
  86.                 try{   
  87.                 bf.close();   
  88.                 bf=null;   
  89.                 }catch(Exception e)   
  90.                 {   
  91.                     System.out.println("关闭BufferReader时出错");   
  92.                 }   
  93.             }   
  94.         }   
  95.     }   
  96.     public static void whiteLines(String lineStr)   
  97.     {   
  98.         if(lineStr.matches("^[\\s&&[^\\n]]*$"))   
  99.         {   
  100.                     whiteLines++;   
  101.         }   
  102.   
  103.     }   
  104.     public static void commendLines(String lineStr)   
  105.     {   
  106.            
  107.                 //判断是否是一个注释行   
  108.                 //这里是单行注释的如 /*..... */或/**.... */   
  109.                 if(lineStr.matches("\\s*/\\*{1,}.*(\\*/).*"))   
  110.                 {   
  111.        
  112.                     commentLines++;   
  113.                 }   
  114.                 /**  
  115.                     这里是多行注释的  
  116.                 */  
  117.                 //这里的是当开始为/**或/*但是没有 */ 关闭时    
  118.                 else if(lineStr.matches("\\s*/\\*{1,}.*[^\\*/].*"))   
  119.                 {   
  120.                    
  121.                     commentLines++;   
  122.                     bComment=true;   
  123.                 }   
  124.                 else if(true==bComment)   
  125.                 {   
  126.                        
  127.                     commentLines++;   
  128.                     if(lineStr.matches("\\s*[\\*/]+\\s*"))   
  129.                     {   
  130.                         bComment=false;   
  131.                     }   
  132.                 }   
  133.                 else if(lineStr.matches("^[\\s]*//.*"))   
  134.                 {   
  135.            
  136.                     commentLines++;   
  137.                 }   
  138.   
  139.     }   
  140.     //public static void codeLines(String lineStr)   
  141.     //{   
  142.     //  if(lineStr.matches("\\s*[[^/\\*]|[//]]+.*"))   
  143.     //  codeLines++;   
  144.     //}   
  145. }  
分享到:
评论
1 楼 richardlovejob 2007-12-03  
我只是初学者,对这个也想过要写,先看看了你的。我把你的这个复制下来,然后编译都通不过,你有几个地方好象少写了一些什么吧。
比如,29行 for(int i=0;i   这个后面应该还有吧,编译报这里有错
还有同样的34行,不知道是不是你的错,反正先跟你提提希望多多指教我的不足。。

我的QQ35830757
希望能多多交流啊。

相关推荐

    统计路径下所有文件任意格式代码行数

    在IT行业中,统计代码行数是一项常见的任务,特别是在软件开发、项目管理和代码审计的过程中。这个压缩包提供的工具显然是为了帮助用户快速、方便地在Windows环境下完成这个任务,无需额外的配置,只需解压后运行run...

    java 统计代码行数

    要实现这个功能,我们可以创建一个Java程序,该程序遍历指定目录下的所有文件,并根据文件扩展名进行分类处理。以下是一个简单的实现思路: 1. **文件遍历**:使用Java的`File`类和`FileUtils`(Apache Commons IO...

    java代码计算行数

    本文将深入探讨如何使用Java工具类来统计一个项目中的代码行数。 首先,我们需要理解代码行数计算的基本概念。通常,代码行数包括源代码文件中的所有非空行,但不包括注释行。在实际项目中,我们可能需要区分空行、...

    代码行数统计工具

    3. **目录与文件层级统计**:SourceCounter可能能够递归地遍历整个项目目录,统计每个文件、每个子目录以及整个项目中的代码行数。 4. **报告生成**:为了便于理解和分析,工具可能会生成可视化报告,包括图表和...

    统计源代码行数及有效代码

    本文将详细介绍如何统计源代码行数以及有效代码,并探讨过滤注释行和自定义统计方式的方法。 首先,统计源代码行数有多种工具和技术可以实现。例如,Python 中有一个名为 `cloc` 的库,它可以快速地计算出源代码...

    java实现统计代码行数

    总结一下,这个Java程序通过遍历目录、读取文件内容、分割行并过滤注释,实现了统计指定目录下所有Java源文件的代码行数。这在软件度量和项目管理中是一个实用的工具,可以帮助我们了解代码库的规模和结构。

    统计代码行数的Eclipse插件

    无论是整个工程目录、单个文件,还是多个文件,它都能够有效地进行统计。这对于项目管理、代码质量评估以及软件复杂性分析来说非常有用。了解代码行数可以帮助开发者估计项目的工作量,评估维护成本,以及在团队间...

    统计java代码行数

    统计Java代码行数的方法有很多种,这里我们将介绍手动统计和使用工具自动统计两种方式。 1. **手动统计**: - 打开`mypro.rar`压缩包,解压后找到包含Java源代码的`.java`文件。 - 使用文本编辑器打开文件,逐行...

    java实现的svn统计修改代码行数完整源码

    这些文件可能并不是直接相关的统计代码行数的代码,但它们是构建和运行Java项目所必需的。 总的来说,通过Java实现的这个工具,我们可以自动化地获取SVN仓库中的代码修改情况,这对于项目管理和团队协作具有重要的...

    java代码行数统计源码

    总之,"java代码行数统计源码"提供的工具是一个实用的开发辅助程序,它综合运用了Java的文件操作、源代码解析、数据处理和可能的用户界面设计等多个技术领域,为开发者提供了一种量化评估项目规模的方式。...

    代码行数计算工具 win版 计算代码行数

    通过简单的操作,用户可以快速获取到项目中每个文件或整个目录的代码行数统计。 使用该工具的方法如下: 1. 下载并安装“代码行数计算工具 win版”。 2. 打开软件,用户界面通常会有一个文件或目录选择框,你可以...

    java多线程代码行数计数器

    它可能会遍历指定目录下的所有文件,如果文件的扩展名符合预设条件(比如.java, .cpp等),就逐行读取文件内容,累计行数。为了确保正确性,计数器可能还需要考虑空行、注释行以及导入语句等因素。 在描述中提到,...

    java代码行数统计.zip

    Java代码行数统计工具是一种实用程序,它可以帮助开发者量化他们的工作量,跟踪项目进度,以及进行代码质量分析。这个zip文件包含的工具专门设计用来计算Java源代码中的行数,提供了一个直观的方式来了解代码库的...

    eclipse代码行数统计插件

    "eclipse代码行数统计插件"就是这样一个工具,它能够帮助开发者快速地统计出项目中的代码行数,包括注释和空行。 在Eclipse中,安装和使用代码行数统计插件非常简单。首先,用户需要打开"Windows"菜单,然后选择...

    统计源代码行数工具exe

    "统计源代码行数工具exe"正是这样一款实用工具,它允许用户快速地对代码库进行分析,统计不同类型的代码文件行数。 这款工具的主要功能在于它的易用性和灵活性。作为一个.exe可执行文件,用户无需安装任何额外的...

    java代码行数统计工具

    针对Java编程语言,有一个专门用于统计代码行数的工具,它不仅适用于Java,还支持C++、Delphi和C#等其他编程语言。本文将详细介绍这个名为"IrisCodeCounter"的工具,以及如何利用它来有效地分析和管理代码库。 ...

Global site tag (gtag.js) - Google Analytics