读书人

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

发布时间: 2012-12-27 10:17:10 作者: rapoo

项目代码行统计工具(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();        }    }*/}

?

1 楼 w156445045 2012-06-27 不是吧,代码统计行的小工具很多很多的啊~ 2 楼 zhengkaifl 2012-06-28 w156445045 写道不是吧,代码统计行的小工具很多很多的啊~
是么,可以推荐一款比较简单、易用的代码行统计工具么? 3 楼 Function 2012-06-28 你用Eclipse的话,为什么不让它帮你统计
Menu->Search->File->
containing text: \n
File: *.java
勾上 Regular Express

读书人网 >编程

热点推荐