`
zhengkaifl
  • 浏览: 24716 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

项目代码行统计工具(Java实现)

    博客分类:
  • Java
阅读更多

    最近突然想看看自己所开发的项目的规模是多大,在网上找了半天硬是没找到一个很好的代码行统计工具。于是自己实现了一个简易版的代码行统计工具,先分享如下:

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;

import org.apache.commons.lang.StringUtils;

public class ProjectCountLine
{
    
    private static final String JAVA_FILE_SUF = "java";
    
    private static final String CSS_FILE_SUF = "css";
    
    private static final String JS_FILE_SUF = "js";
    
    private static final String JSP_FILE_SUF = "jsp";
    
    private static final String HTML_FILE_SUF = "html";
    
    private static final String PROPERTIES_FILE_SUF = "properties";
    
    private static final String VM_FILE_SUF = "vm";
    
    // 项目的跟目录
    private File rootFile = null;
    
    // 项目的行数
    private long count = 0L;
    
    /**
     * 入口方法
     * 
     * @param path 项目的根目录路径
     * @return
     * @throws IOException
     * @see [类、类#方法、类#成员]
     */
    public long service(String path)
        throws IOException
    {
        boolean flag = checkPath(path);
        
        if (flag)
            countFilesLine(rootFile);
        
        return count;
    }
    
    
    /**
     * 检查文件是否是需要统计的文件类型
     * 
     * @param fileName 文件的名称
     * @return true:文件为需要统计的文件; false:文件为不需要统计的文件
     * @see [类、类#方法、类#成员]
     */
    private boolean isCountFileType(String fileName)
    {
        if(StringUtils.isBlank(fileName))
            return false;
            
        if (fileName.endsWith(JAVA_FILE_SUF) || fileName.endsWith(CSS_FILE_SUF) || fileName.endsWith(JS_FILE_SUF)
            || fileName.endsWith(JSP_FILE_SUF) || fileName.endsWith(HTML_FILE_SUF) || fileName.endsWith(PROPERTIES_FILE_SUF)
            || fileName.endsWith(VM_FILE_SUF))
            return true;
        
        return false;
    }
    
    /**
     * 检查项目的根路径是否正确
     * 
     * @param path 项目路径
     * @return true:传入的路径是正确的; false:传入的路径不正确
     * @see [类、类#方法、类#成员]
     */
    private boolean checkPath(String path)
    {
        
        if (StringUtils.isBlank(path))
            return false;
        
        rootFile = new File(path);
        
        if (!rootFile.exists() && !rootFile.isDirectory())
            return false;
        
        return true;
    }
    
    
    /**
     * 统计指定文件下的所包含的指定格式的文件的行数
     * 
     * @param file 指定文件
     * @throws IOException 文件不存在时抛出IO异常
     * @see [类、类#方法、类#成员]
     */
    private void countFilesLine(File file)
        throws IOException
    {
        
        File[] files = file.listFiles();
        
        if (null == files)
            return;
        
        for (int i = 0; i < files.length; i++)
        {
            File tempFile = files[i];
            String fileName = tempFile.getName();
            if (fileName.endsWith("svn"))
                continue;
            
            if (tempFile.isFile())
            {
                if (isCountFileType(fileName))
                {
                    LineNumberReader linReader = new LineNumberReader(new FileReader(tempFile));
                    linReader.skip(Long.MAX_VALUE);
                    count += linReader.getLineNumber() + 1;
                }
            }
            else
            {
                // 当前为File目录,则进行递归
                countFilesLine(tempFile);
            }
        }
    }
    
/*    public static void main(String[] args)
    {
        ProjectCountLine countLine = new ProjectCountLine();
        try
        {
            long count = countLine.service("D:/MWConfigWorkSpace/MWConfig");
            System.out.println(count);
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }*/
}

 

0
0
分享到:
评论
3 楼 Function 2012-06-28  
你用Eclipse的话,为什么不让它帮你统计
Menu->Search->File->
containing text: \n
File: *.java
勾上 Regular Express
2 楼 zhengkaifl 2012-06-28  
w156445045 写道
不是吧,代码统计行的小工具很多很多的啊~

是么,可以推荐一款比较简单、易用的代码行统计工具么?
1 楼 w156445045 2012-06-27  
不是吧,代码统计行的小工具很多很多的啊~

相关推荐

    代码行统计工具java源码

    《代码行统计工具Java源码解析》 在软件开发中,代码行数(Lines of Code,简称LOC)常被用作衡量项目规模和工作量的一个参考指标。代码行统计工具可以帮助开发者快速了解项目的整体结构,便于管理和优化。本文将...

    java代码统计工具

    总的来说,"java代码统计工具"是一个实用的开发辅助工具,通过解析.java文件,它提供了量化代码结构和质量的重要信息,对于项目管理和代码质量管理具有重要意义。它的实现涉及到文件操作、文本解析和可能的过滤策略...

    代码统计工具【java】

    本篇将详细探讨如何使用代码统计工具来处理Java项目,以及相关的技术要点。 首先,我们需要明确的是代码统计的目标。在Java环境下,有效的代码行数通常指的是不包括空行、注释行、导入语句等的可执行代码行。这些...

    代码行统计工具(CountLines)

    《代码行统计工具(CountLines)——掌握Java代码量的利器》 在软件开发过程中,代码行数(LOC,Lines of Code)常被用来作为衡量项目规模和工作量的一个重要指标。为了方便开发者对Java代码进行统计分析,出现了名为...

    代码行统计工具

    代码行统计工具是一种用于分析软件项目规模和复杂度的重要辅助工具。它可以帮助开发者、项目经理以及质量保证团队了解项目的代码量,以便评估开发进度、维护成本和潜在的代码质量问题。这类工具通常能支持多种编程...

    Java代码统计工具

    Java代码统计工具是一款专为Java开发者设计的实用小软件,旨在帮助程序员高效地分析和量化他们的代码库。这款工具能够提供一系列详细的统计信息,有助于理解项目中的代码结构和质量。以下将详细介绍该工具的主要功能...

    代码行数统计工具

    标题提到的“代码行数统计工具”是专门用于计算源代码文件中行数的实用程序,适用于各种项目。这种工具能够帮助开发者、项目经理和质量保证人员了解项目的整体状况,进行进度跟踪、资源规划和复杂性分析。 代码行数...

    c/c++、java代码行统计工具

    总之,“c/c++、java代码行统计工具”如“SourceCounter”为开发者提供了一种有效的方法来量化代码库的规模和复杂度,这对于项目管理、代码审查和持续改进都有着积极的影响。通过定期进行代码统计,开发团队可以持续...

    一个实用的代码行统计工具

    3. **语言支持**:好的代码行统计工具应支持多种编程语言,如Java、Python、C++、JavaScript等,以适应多语言开发环境。 4. **代码复杂度分析**:部分工具还能进一步分析代码的复杂度,例如圈复杂度(Cyclomatic ...

    代码行统计(可以对C\C++、Java的源代码进行统计,统计结果包括:总行数、空行数、注释行数和代码行数,统计结果可以以表格的形式显示给用户或另存为文件)

    代码行统计工具用Java语言实现,可以对C\C++、Java的源代码进行统计,统计结果包括:总行数、空行数、注释行数和代码行数,统计结果可以以表格的形式显示给用户或另存为文件。 一 执行环境: 操作系统:WindowsNT/...

    代码行 统计 工具

    标题提到的“代码行统计工具”是一款集成了多种编程语言支持的实用程序,其中包括C、Java和VB等常见编程语言,并且允许用户自定义添加新的代码类型,如VBS和ABC。 在软件开发中,代码行(LOC,Lines of Code)通常...

    java代码行数统计工具

    3. **报告输出**:IrisCodeCounter很可能会生成详细的报告,展示每个文件或整个项目的代码统计信息。这些报告可以用于项目审计、进度跟踪或者性能比较。 4. **命令行接口**:基于其提供的".exe"可执行文件,我们...

    代码行统计工具.rar

    使用这样的代码行统计工具对于项目管理具有显著价值。项目经理可以利用这些数据来估计项目的进度,因为代码行数通常与开发工作量成正比。同时,测试团队也可以根据代码量来规划测试策略,例如,代码量大的模块可能...

Global site tag (gtag.js) - Google Analytics