Eclipse统计项目代码行数
2017-02-10 16:39
1046 查看
在项目中,我们常常有统计代码行数的需要,但是如果不利用第三方工具的话,面对一个项目(甚至一个工程或解决方案中若干个项目)中成百上千的代码文件,实在有一种力不从心的感觉。
我们期望能够用最简单的方法完成这些重要却细微的需求。下面我给大家介绍一种无需借助第三方工具,无需复杂操作,无需人工统计计算的方法解决这个问题。
下面的方法就是所有的IDE都有的“查找”,在查找框中输入内容(选择正则表达式),选择好搜索范围,点击搜索则会显示匹配结果,会看到诸如: 在xxx个文件中查到xxx个匹配项。
一、Search->File
1统计代码行数:\n
2统计代码行数并排除空行:^[ \t]*[^ \t\n\r]+.*$
上面的方法可以很迅速地得到代码行数,不过遗憾的是统计结果把空行(仅包含空格和制表符的行)也统计进去了,然而很多时候我们并不想把这些文本也给算进代码量里去,怎么办呢?别急,我们只要对正则表达式做一点点修改。我的思路是,只需要找出一个不是空格或制表符的字符即可,于是我写出了这个正则表达式 ^[ \t]*[^ \t\n\r]+.*$ ,它表示先忽略一行前面的连续空格和制表符,然后寻找是否有一个字符不为空格、制表符、换行符和回车符,如果有则表明这行不为空行。
3统计代码行数并排除空行和注释行:^[ \t]*[^ \t\n\r/#]+.*$
在实际项目中,我们或许认为注释行不应成为生产量,应从统计数据中排除出去。似乎这个问题棘手得多。不过别担心,只要善于利用正则表达式,这个问题也能轻松解决。
我们首先要能够对注释行有一个认识。很多程序设计语言中,注释行都会用“/”或者“#”等字符开头。我们假设项目中的注释行都是以“/”或“#”开头的(请读者考虑自己项目的特点自行修改),那么我们要查找的是一行中第一个非空字符不是“/”和“#”的行。跟上一节类似地,我们可以写出^[ \t]*[^ \t\n\r/#]+.*$ 。
二、代码实现
参考文献:
1、http://www.cnblogs.com/bitzhuwei/p/how-many-lines-in-project.html
2、http://blog.csdn.net/xiangtianzaijie500/article/details/53096709
3、http://www.cnblogs.com/javawebsoa/archive/2013/05/04/3059993.html
我们期望能够用最简单的方法完成这些重要却细微的需求。下面我给大家介绍一种无需借助第三方工具,无需复杂操作,无需人工统计计算的方法解决这个问题。
下面的方法就是所有的IDE都有的“查找”,在查找框中输入内容(选择正则表达式),选择好搜索范围,点击搜索则会显示匹配结果,会看到诸如: 在xxx个文件中查到xxx个匹配项。
一、Search->File
1统计代码行数:\n
2统计代码行数并排除空行:^[ \t]*[^ \t\n\r]+.*$
上面的方法可以很迅速地得到代码行数,不过遗憾的是统计结果把空行(仅包含空格和制表符的行)也统计进去了,然而很多时候我们并不想把这些文本也给算进代码量里去,怎么办呢?别急,我们只要对正则表达式做一点点修改。我的思路是,只需要找出一个不是空格或制表符的字符即可,于是我写出了这个正则表达式 ^[ \t]*[^ \t\n\r]+.*$ ,它表示先忽略一行前面的连续空格和制表符,然后寻找是否有一个字符不为空格、制表符、换行符和回车符,如果有则表明这行不为空行。
3统计代码行数并排除空行和注释行:^[ \t]*[^ \t\n\r/#]+.*$
在实际项目中,我们或许认为注释行不应成为生产量,应从统计数据中排除出去。似乎这个问题棘手得多。不过别担心,只要善于利用正则表达式,这个问题也能轻松解决。
我们首先要能够对注释行有一个认识。很多程序设计语言中,注释行都会用“/”或者“#”等字符开头。我们假设项目中的注释行都是以“/”或“#”开头的(请读者考虑自己项目的特点自行修改),那么我们要查找的是一行中第一个非空字符不是“/”和“#”的行。跟上一节类似地,我们可以写出^[ \t]*[^ \t\n\r/#]+.*$ 。
二、代码实现
import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.util.ArrayList; import java.util.List; public class LineCounter { List<File> list = new ArrayList<File>(); int linenumber = 0; FileReader fr = null; BufferedReader br = null; public void counter(String path) { // String path = System.getProperty("user.dir"); 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; } } } //将src下所有文件组织成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().lastIndexOf(".java")>0||s.getName().lastIndexOf(".jsp")>0||s.getName().lastIndexOf(".js")>0||s.getName().lastIndexOf(".css")>0) { }else{ continue; } 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(); lc.counter("W:/workspaces/wm/xxProject"); //$NON-NLS-1$ } }
参考文献:
1、http://www.cnblogs.com/bitzhuwei/p/how-many-lines-in-project.html
2、http://blog.csdn.net/xiangtianzaijie500/article/details/53096709
3、http://www.cnblogs.com/javawebsoa/archive/2013/05/04/3059993.html
相关文章推荐
- eclipse统计整个项目的代码行数
- eclipse统计整个项目的代码行数
- eclipse统计整个项目的代码行数
- 使用eclipse统计项目代码行数
- Eclipse中统计项目代码行数技巧
- 在Eclipse统计项目的代码行数
- 在eclipse中统计项目的代码行数
- eclipse统计项目的代码行数
- 应用eclipse统计项目代码行数
- 在Eclipse统计项目的代码行数
- 在Eclipse中统计项目的代码行数
- 统计Xcode项目代码行数
- 统计项目代码行数Count Lines of Code(CLOC)
- Eclipse 统计工程总代码行数
- 统计一个项目的代码行数,只统计cpp文件
- 统计项目中的代码行数
- 递归统计项目中的非空白代码行数
- .net winform下 C#/VB.NET项目代码行数统计(2009-6-25新版本)
- Eclipse 添加代码行数统计插件
- .net winform下 C#/VB.NET项目代码行数统计(2009-6-25新版本)