A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© vipzh 中级黑马   /  2012-12-6 12:58  /  1391 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

统计项目中一共多少行代码,呵呵,可以实现吗?

2 个回复

倒序浏览
有相关的测试工具,比如说sonar,可以知道代码的复杂度及有效代码行数!
回复 使用道具 举报
代码如下:

import java.io.BufferedReader;
  import java.io.File;
  import java.io.FileNotFoundException;
  import java.io.FileReader;
  import java.io.IOException;
  /**
  *
  * @author LC
  *
  */
  public class SumJavaCode {
  static long normalLines = 0; // 空行
  static long commentLines = 0; // 注释行
  static long whiteLines = 0; // 代码行
  public static void main(String[] args) {
  SumJavaCode sjc = new SumJavaCode();
  File f = new File(“D:\\spring-framework-2.0-with-dependencies\\spring-framework-2.0″); //目录
  System.out.println(f.getName());
  sjc.treeFile(f);
  System.out.println(“空行:” + normalLines);
  System.out.println(“注释行:” + commentLines);
  System.out.println(“代码行:” + whiteLines);
  }
  /**
  * 查找出一个目录下所有的.java文件
  *
  * @param f 要查找的目录
  */
  private void treeFile(File f) {
  File[] childs = f.listFiles();
  //int count = 0;
  //int sum = 0;
  for (int i = 0; i < childs.length; i++) {
  // System.out.println(preStr + childs[i].getName());
  if (!childs[i].isDirectory()) {
  if (childs[i].getName().matches(“.*\\.java$”)) {
  System.out.println(childs[i].getName());
  //count ++;
  sumCode(childs[i]);
  }
  } else {
  treeFile(childs[i]);
  //sum += count;
  }
  }
  }
  /**
  * 计算一个.java文件中的代码行,空行,注释行
  *
  * @param file
  * 要计算的.java文件
  */
  private void sumCode(File file) {
  BufferedReader br = null;
  boolean comment = false;
  try {
  br = new BufferedReader(new FileReader(file));
  String line = “”;
  try {
  while ((line = br.readLine()) != null) {
  line = line.trim();
  if (line.matches(“^[\\s&&[^\\n]]*$”)) {
  whiteLines++;
  } else if (line.startsWith(“/*”) && !line.endsWith(“*/”)) {
  commentLines++;
  comment = true;
  } else if (true == comment) {
  commentLines++;
  if (line.endsWith(“*/”)) {
  comment = false;
  }
  } else if (line.startsWith(“//”)) {
  commentLines++;
  } else {
  normalLines++;
  }
  }
  } catch (IOException e) {
  e.printStackTrace();
  }
  } catch (FileNotFoundException e) {
  e.printStackTrace();
  } finally {
  if (br != null) {
  try {
  br.close();
  br = null;
  } catch (IOException e) {
  e.printStackTrace();
  }
  }
  }
  }
  }

评分

参与人数 1技术分 +1 收起 理由
杨千里 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马