正则表达式统计代码行数,注释行,空白行

论坛 期权论坛 脚本     
已经匿名di用户   2022-7-2 22:14   2627   0


package regex;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CountCode {

 private static int codeNum=0;
 private static int bankNum=0;
 private static int comentNum=0;
 private static boolean b=false;
 
 public static void main(String[] args) {
  try {
   BufferedReader br=new BufferedReader(new FileReader("F:\\java project\\TankWar8\\src\\Tank.java"));
   String code="";
   while((code=br.readLine())!=null){
    parse(code);
   }
   System.out.println("有效代码行数:"+codeNum);
   System.out.println("空白行数:"+bankNum);
   System.out.println("注释行数:"+comentNum);
   
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

 private static void parse(String code) {  
  if(code.matches("^\\s*$")){
   bankNum++; 
  }/*else if(code.trim().matches("(?!import|package).+;\\s*(((//)|(/\\*+)).*)*")){    //包括注释的代码行数(不准确)
   codeNum++;
  }*/else if(code.trim().startsWith("/*") && !code.trim().endsWith("*/")){
   comentNum++;
   b=true;
  }else if(b==true){
   comentNum++;
   if(code.trim().endsWith("*/")){
    b=false;
   } 
  }else if(code.trim().startsWith("/*") && code.trim().endsWith("*/")){
   comentNum++;
  }else if(code.trim().startsWith("//")){
   comentNum++;
  }else{
   codeNum++;
  }
  
  
  
  
  
  
 }

}


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP