代码参考:http://blog.sina.com.cn/s/blog_7cf112e00100vnad.html

由于项目需要统计代码注释量,故寻此代码。

由于我们需要统计的代码中,注释有多种形式,需要过滤出别人以前写的注释,只统计我们新写的注释。

旧的注释采用的注释方式有三种:

<span style="font-size:18px;">//  注释1 /*
* 注释2
*//* 注释3 */</span>

新写的注释有如下三种:

<span style="font-size:18px;">/*!
* 注释1
*//**
* 注释2
*//** 注释3 */</span>

旧的注释直接略去,不算在代码行与注释行里,修改后代码如下:

<span style="font-size:18px;">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>();  public static void main(String[] args) {  //可以统计指定目录下以及其子目录下的所有java文件中代码File file = new File("E://worktest//"); ArrayList<File> al = getFile(file);  for (File f : al) {
//            if (f.getName().matches(".*\\.java$")) // 匹配java格式的文件
//              if (f.getName().matches(".*\\.xml$")) // 匹配xml格式的文件
//              if (f.getName().matches(".*\\.sql$")) // 匹配sql格式的文件
//             if (f.getName().matches(".*\\.properties$")) // 匹配properties格式的文件
//            if (f.getName().matches(".*\\.jsp$")) // 匹配jsp格式的文件
//            if (f.getName().matches(".*\\.js$")) // 匹配js格式的文件  if (f.getName().matches(".*\\.cc$")) // 匹配js格式的文件  count(f);  if (f.getName().matches(".*\\.h$")) // 匹配js格式的文件  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;  boolean flag2 = 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("//")) {  //这种注释块我不需要算作注释,而且也不需要算为代码行}  else if (line.startsWith("/**")||line.startsWith("/*!")) {  //只计算这种形式的注释块commentLines++;  flag = true;if (line.endsWith("*/")) {  flag = false;  }} else if (flag == true) {  commentLines++;  if (line.endsWith("*/")) {  flag = false;  }  } else if (line.startsWith("/*")) {  //只计算这种形式的注释块flag2 = true;if (line.endsWith("*/")) {  flag2 = false;  }} else if (flag2 == true) {  if (line.endsWith("*/")) {  flag2 = 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();  }  }  }  }
} </span>

可以修改代码存放路径和识别的文件类型,程序能扫描整个文件夹以及子文件夹。

转载注明出处:http://blog.csdn.net/lqc1992/article/details/48262881

java注释量统计代码实现相关推荐

  1. java 注释 超链接_java_Java代码注释规范详解,代码附有注释对程序开发者来 - phpStudy...

    Java代码注释规范详解 代码附有注释对程序开发者来说非常重要,随着技术的发展,在项目开发过程中,必须要求程序员写好代码注释,这样有利于代码后续的编写和使用. 基本的要求: 1.注释形式统一 在整个应 ...

  2. linux统计代码注释率,统计代码注释率

    #!/bin/bash #program: #       分析.c,.cpp文件,计算文件行总数,代码行总数,注释行总数,空白行总数,代码注释率 #       注释类型: #       (1)行 ...

  3. Java注释 link_开源代码中注释中的那些a link p @ 是给什么编辑器用的????

    比如下面spring源码中的这段注释 * Servlet-based {@link org.springframework.web.multipart.MultipartResolver} imple ...

  4. java注释佛祖_代码注释佛祖,代码打印佛祖,代码可以打印出来如来佛。

    看是不是这个..// // _ooOoo_ // o8888888o // 88" . "88 // (| -_- |) // O\ = /O // ____/`---'\____ ...

  5. 带有自定义注释的Java注释教程

    Java注释提供有关代码的信息,并且它们对所注释的代码没有直接影响. 在本教程中,我们将学习Java注释,如何编写自定义注释 ,注释用法以及如何使用反射来解析注释 . 注释是在Java 1.5中引入的 ...

  6. Git统计代码行数;Java实现统计代码行数,忽略空行、注释行

    前言 某天,产品叫我算下某个项目的代码行数,我一愣,这怎么统计?总不可能一个文件一个文件算吧?后面我找了下,git是可以统计提交到仓库的所有的代码的,不过有个问题,就是假如有些文件我不想算进去怎么办? ...

  7. java判断一个文件有多少行_Java关于条件判断练习--统计一个src文件下的所有.java文件内的代码行数(注释行、空白行不统计在内)...

    要求:统计一个src文件下的所有.java文件内的代码行数(注释行.空白行不统计在内) 分析:先封装一个静态方法用于统计确定的.java文件的有效代码行数.使用字符缓冲流读取文件,首先判断是否是块注释 ...

  8. eclipse代码量统计插件_Android Studio 代码行数统计插件Statistic的简单使用

    在项目开发过程中,有时候需要统计代码行数(比如组长想关心一下你的代码量,或者要申请软件著作权时),需要统计的文件类型主要是 .java..xml..kt等,已经有人开发好相关插件了,如果你是用Andr ...

  9. 统计代码量-代码统计工具 CLOC | gitlab统计代码量

    文章目录 一.代码统计工具 CLOC 什么是CLOC? 下载安装 clocs使用 二.gitlab统计代码量 命令行统计 图形化统计 IDE Statistic统计代码插件 一.代码统计工具 CLOC ...

最新文章

  1. 【小安中文翻唱】听海——毁中文歌啦~
  2. Android操作HTTP实现与服务器通信
  3. MyBatis mapper 注解过程中通过 LanguageDriver 实现动态 SQL
  4. JavaFX UI控件教程(二)之JavaFX UI控件
  5. 单件模式与业务逻辑服务层封装
  6. 基于CentOS7,MySQL5.7的 读写分离
  7. STM32工作笔记0059---独立看门狗实验
  8. JavaScript数据结构——队列(Queue)
  9. Android中加载Gif动画
  10. Windows 7 Sp1 x64 安装英文语言包
  11. Unity里加速纹理压缩
  12. Microsoft Teams 思维导图的4大好处,你知道怎样创建吗?
  13. 怎么给图片添加贴纸?介绍几个简单的方法
  14. cad绘制正八边形_CAD怎么画正八边形 看完你学会了么
  15. 上帝视角学JAVA- 基础07-类05【2021-08-06】
  16. 计算机网络(五)—— 运输层(8):TCP的连接建立和连接释放
  17. 你好,我是计算机组成原理(计算机组成原理1)
  18. 用pygame编写一个跑酷游戏
  19. paypal 主要的html 表格变量的含义
  20. 深圳二手房房源市场研究(上)

热门文章

  1. 2022,软件测试出路在哪里?
  2. MCMC(三)蒙特卡洛之Gibbs采样
  3. HTML如何表自动求和,sum汇总求和公式 格式设置为常规就可以了
  4. Spring Cloud在中小型项目中的应用
  5. 用于改进筛查的乳腺癌异常检测
  6. esxi查看许可过期_解决Vsphere Client 60天过期问题
  7. 杰理之开音量同步--上一次通话音量为0--下次通话没声音【篇】
  8. 【电力电子技术】有源逆变与无源逆变
  9. NodeJS微信公众平台开发
  10. 【GIS】OpenStreetMap城市边界shp提取