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

Java版 项目 行数统计程序

    博客分类:
  • java
阅读更多

      因为前一段上课,老师说:“咱们学校计算机专业毕业的学生,真正写过程序的人很少,现在程序员的标准是至少写过3w行代码,不然算不上程序员;是自己设计程序,而不算那些抄的,照书上打的等。”

      我表示认同,只是说我们学校吧,是这样的,几乎没什么人写过程序。

      前一段刚完成一个项目,闲着无聊,就写了一个程序,只需要修改项目名称就可以知道项目总代码数,当然,程序很简单,大家都能写出来,我只是提供给参考,有好的建议希望高手提出来。

 

 

//package org.linecount.counter;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;

/**
 * 计算一个项目中文件总行数
 * @author Irfen
 * @version 1.0.0
 */
public class LineCounter {

    List<File> list = new ArrayList<File>();
    int linenumber = 0;
    FileReader fr = null;
    BufferedReader br = null;
    public void counter(String projectName) {
//        String path = System.getProperty("user.dir");

        String path = LineCounter.class.getResource("/").getPath();  // 同下个path

        //具体项目路径因版本不同会有差异,下面会打印路径,请根据实际情况修改路径截取长度
        path = path.substring(1, path.length() - 22) + "/" + projectName;
        System.out.println(path);
        File file = new File(path);
        File files[] = null;
        files = file.listFiles();
        addFile(files);
        isDirectory(files);
        readLinePerFile();
        System.out.println("Totle:" + linenumber + "行");
    }
    // 判断是否是目录
    public void isDirectory(File[] files) {
        for (File s : files) {
            if (s.isDirectory()) {
                File file[] = s.listFiles();
                addFile(file);
                isDirectory(file);
                continue;
            }
        }
    }
    //将项目下所有文件组织成list
    public void addFile(File file[]) {
        for (int index = 0; index < file.length; index++) {
            list.add(file[index]);
            // System.out.println(list.size());
        }
    }
    //读取所有非空白行
    public void readLinePerFile() {
        try {
            for (File s : list) {
                int yuan = linenumber;
                if (s.isDirectory()) {
                    continue;
                }
                
                //扫描的文件类型
                if(s.getName().indexOf(".jsp") != -1 || 
                		s.getName().indexOf(".java") != -1 || 
                		s.getName().indexOf(".htm") != -1 || 
                		s.getName().indexOf(".html") != -1 || 
                		s.getName().indexOf(".js") != -1 || 
                		s.getName().indexOf(".css") != -1 ) {
                	fr = new FileReader(s);
                    br = new BufferedReader(fr);
                    String i = "";
                    while ((i = br.readLine()) != null) {
                        if (!isBlankLine(i))//如果想加入空白行,请注释此行
                            linenumber++;
                    }
                    System.out.print(s.getName());
                    System.out.println("\t\t有" + (linenumber - yuan) + "行");
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (Exception e) {
                }
            }
            if (fr != null) {
                try {
                    fr.close();
                } catch (Exception e) {
                }
            }
        }
    }
    //是否是空行
    public boolean isBlankLine(String i) {
        if (i.trim().length() != 0) {
            return false;
        } else {
            return true;
        }
    }
    public static void main(String args[]) {
        LineCounter lc = new LineCounter();
        String projectName = "ufo";     //这里传入你的项目名称
        lc.counter(projectName);
    }
}

 

2
2
分享到:
评论
2 楼 irfen 2011-10-05  
langyu 写道
还不错,鼓励下,如果把那个递归抽取出来就更好了。

还有,一般这样的需求不是传入项目名,而是传入项目的本地文件系统绝对目录


传入系统的绝对路径的话是不错,这个吸取一下。而且程序也会稍微简单一点。
1 楼 langyu 2011-10-05  
还不错,鼓励下,如果把那个递归抽取出来就更好了。

还有,一般这样的需求不是传入项目名,而是传入项目的本地文件系统绝对目录

相关推荐

    代码统计工具 可统计项目行数

    可用于对VC++、C++ Builder、Delphi、VB、C/C++、ASM、Java、C#、SQL 等程序源码进行详细的统计,可以准确的分析出程序中代码行、注释行和空白行的行数。程序会自动根据你选择的文件类型选择相应的统计方式,并将...

    代码行数统计工具

    可用于对VC++、C++ Builder、Delphi、VB、C/C++、ASM、Java、C#、SQL 等程序源码进行详细的统计,可以准确的分析出程序中代码行、注释行和空白行的行数。程序会自动根据你选择的文件类型选择相应的统计方式,并将...

    绿色源代码行数统计工具 支持20多种代码格式

    免费的源代码行数统计工具,支持20多种代码格式。具有统计迅速、准确的优点,是程序开发人员的必备工具。可以对 C++、VB.Net、VB、C#、JAVA、Delphi、ASP.Net、ASP、JSP、PHP、HTML 等项目的代码行数、工数和成本...

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

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

    计算代码行数工具

    Java、C#、SQL 等程序源码进行详细的统计,可以准确的分 析出程序中代码行、注释行和空白行的行数。程序会自动根 据你选择的文件类型选择相应的统计方式,并将所有文件的 分析结果进行汇总,便于方便直观的对软件...

    很好用的绿色源代码行数统计软件

    Java、C#、SQL 等程序源码进行详细的统计,可以准确的分 析出程序中代码行、注释行和空白行的行数。程序会自动根 据你选择的文件类型选择相应的统计方式,并将所有文件的 分析结果进行汇总,便于方便直观的对软件...

    源代码统计精灵 免费的源代码行数统计工具

    免费的源代码行数统计工具,支持20多种代码格式。可以对 VC++/.Net/JAVA/VB/Delphi/ASP/HTML 等项目的代码进行统计,并能保存统计的结果。 统计迅速、准确,是程序开发人员的必备工具

    代码行统计工具(可用于对VC++、C++ Builder、Delphi、VB、C/C++、ASM、Java、C#、SQL 等程序源码进行详细的统计,可以准确的分析出程序中代码行、注释行和空白行的行数。)

    可用于对VC++、C++ Builder、Delphi、VB、C/C++、ASM、Java、C#、SQL 等程序源码进行详细的统计,可以准确的分析出程序中代码行、注释行和空白行的行数。程序会自动根据你选择的文件类型选择相应的统计方式,并将...

    代码行数统计器代码行 统计器 源文件 统计

    可用于对VC++、C++ Builder、Delphi、VB、C/C++、ASM、Java、C#、SQL 等程序源码进行详细的统计,可以准确的分析出程序中代码行、注释行和空白行的行数。程序会自动根据你选择的文件类型选择相应的统计方式,并将...

    java智能源码统计专家

    可用于对VC++、C++ Builder、Delphi、VB、C/C++、ASM、Java、C#、SQL 等程序源码进行详细的统计,可以准确的分析出程序中代码行、注释行和空白行的行数。程序会自动根据你选择的文件类型选择相应的统计方式,并将...

    代码行差异统计工具,勇于比较两个代码包的新增,修改,删除的代码量,并能按语言类型归类

    如果需要,可以把diffcount当作普通的代码行统计工具,统计一个代码包 代码统计使用 -c (或者--count-only)参数, 在diffcount目录下执行 diffcount -c test\count 执行结果如下: G:\diffcount&gt;diffcount -c ...

    代码统计工具 linecount

    可用于对VC++、C++ Builder、Delphi、VB、C/C++、ASM、Java、C#、SQL 等程序源码进行详细的统计,可以准确的分析出程序中代码行、注释行和空白行的行数。程序会自动根据你选择的文件类型选择相应的统计方式,并将...

    智能源码统计专家、代码统计工具

    Java、C#、SQL 等程序源码进行详细的统计,可以准确的分 析出程序中代码行、注释行和空白行的行数。程序会自动根 据你选择的文件类型选择相应的统计方式,并将所有文件的 分析结果进行汇总,便于方便直观的对软件...

    智能源码统计专家

    可用于对VC++、C++ Builder、Delphi、VB、C/C++、ASM、Java等程序源码进行详细的统计,可以非常准确的分析出程序中代码行、注释行和空白行的行数。程序会自动根据你选择的文件类型选择相应的统计方式,并将所有文件...

    代码行统计工具

    Java、C#、SQL 等程序源码进行详细的统计,可以准确的分 析出程序中代码行、注释行和空白行的行数。程序会自动根 据你选择的文件类型选择相应的统计方式,并将所有文件的 分析结果进行汇总,便于方便直观的对软件...

Global site tag (gtag.js) - Google Analytics