计算代码量

    技术2022-05-11  19

    import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;

    public class CodeCounter {  static long normalLines = 0; static long commentLines = 0; static long whiteLines = 0;  public static void main(String[] args) {  File f = new File("D://share//JavaProjects//TankWar1.9.11//src");  File[] codeFiles = f.listFiles();  for(File child : codeFiles){   if(child.getName().matches(".*//.java$")) {    parse(child);   }  }    System.out.println("normalLines:" + normalLines);  System.out.println("commentLines:" + commentLines);  System.out.println("whiteLines:" + whiteLines);   }

     private static void parse(File f) {  BufferedReader br = null;  boolean comment = false;  try {   br = new BufferedReader(new FileReader(f));   String line = "";   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 (line.startsWith("/*") && line.endsWith("*/")) {     commentLines ++;    } else if (true == comment) {     commentLines ++;     if(line.endsWith("*/")) {      comment = false;     }    } else if (line.startsWith("//")) {     commentLines ++;    } else {     normalLines ++;    }   }  } catch (FileNotFoundException e) {   e.printStackTrace();  } catch (IOException e) {   e.printStackTrace();  } finally {   if(br != null) {    try {     br.close();     br = null;    } catch (IOException e) {     e.printStackTrace();    }   }  } }

    }


    最新回复(0)