锁定老帖子 主题:自己写的java代码统计小工具
精华帖 (1) :: 良好帖 (0) :: 新手帖 (6) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-07
最后修改:2009-12-07
一时兴起,写了这个简单的代码统计程序,可以统计一下自己最近的工作量。目前只支持统计java文件,想要统计其他文件,可以相应的写个匹配加入进去就ok。 import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; public class CodeCounter { static long codeLines = 0; static long commentLines = 0; static long blankLines = 0; static ArrayList<File> fileArray = new ArrayList<File>(); /** * 可以统计指定目录下以及其子目录下的所有java文件中代码 * * @author NumbCoder */ public static void main(String[] args) { File file = new File("F:\\test"); ArrayList<File> al = getFile(file); for (File f : al) { if (f.getName().matches(".*\\.java$")) // 匹配java格式的文件 count(f); } System.out.println("代码行数:" + codeLines); System.out.println("注释行数:" + commentLines); System.out.println("空白行数: " + blankLines); } // 获得目录下的文件和子目录下的文件 public static ArrayList<File> getFile(File f) { File[] ff = f.listFiles(); for (File child : ff) { if (child.isDirectory()) { getFile(child); } else fileArray.add(child); } return fileArray; } // 统计方法 private static void count(File f) { BufferedReader br = null; boolean flag = false; try { br = new BufferedReader(new FileReader(f)); String line = ""; while ((line = br.readLine()) != null) { line = line.trim(); // 除去注释前的空格 if (line.matches("^[ ]*$")) { // 匹配空行 blankLines++; } else if (line.startsWith("//")) { commentLines++; } else if (line.startsWith("/*") && !line.endsWith("*/")) { commentLines++; flag = true; } else if (line.startsWith("/*") && line.endsWith("*/")) { commentLines++; } else if (flag == true) { commentLines++; if (line.endsWith("*/")) { flag = false; } } else { codeLines++; } } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (br != null) { try { br.close(); br = null; } catch (IOException e) { e.printStackTrace(); } } } } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-12-08
最近正在学正则表达式,学习了
|
|
返回顶楼 | |
发表时间:2009-12-08
如同上楼所说,这里还有很多没考虑到哦 "http://www.google.com" 这种呢
|
|
返回顶楼 | |
发表时间:2009-12-08
考虑还需要周全些
另外,很像某个视频里的代码,貌似那里见到过。。不记得了 |
|
返回顶楼 | |
发表时间:2009-12-08
icanfly 写道 private String something;//this is a note 这种好像没有做处理诶 这个是正常的一行代码呀 不需要处理。 |
|
返回顶楼 | |
发表时间:2009-12-08
tenderuser 写道 如同上楼所说,这里还有很多没考虑到哦 "http://www.google.com" 这种呢 你说的是什么意思啊? http://www.google.com是什么? |
|
返回顶楼 | |
发表时间:2009-12-08
马士兵好像在讲正则式也写过一个,不知道lz的怎么样。
|
|
返回顶楼 | |
发表时间:2009-12-08
只匹配*.java的?jsp里的<%%>不算了?
|
|
返回顶楼 | |
发表时间:2009-12-08
NumbCoder 写道 tenderuser 写道 如同上楼所说,这里还有很多没考虑到哦 "http://www.google.com" 这种呢
你说的是什么意思啊? http://www.google.com是什么? 标签啊 ,哥哥。。。 |
|
返回顶楼 | |
发表时间:2009-12-08
楼主只是随手拈花而已,大家何必认真呢?
|
|
返回顶楼 | |