zoukankan      html  css  js  c++  java
  • 代码行数统计

    /**
     * Copyright © 2015 All rights reserved.
     */
    package cn.yufu.system.tools;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.ArrayList;
    
    /**
     * 代码行数统计
     * @author 
     * @version 
     */
    public class CodeCounter {
    
    	/**
    	 * 代码行数统计
    	 */
    	public static void main(String[] args) {
    		String file = CodeCounter.class.getResource("/").getFile();
    		String path = file.replace("target/test-classes", "src");
    
    		ArrayList<File> al = getFile(new File(path));
    		for (File f : al) {
    			if (f.getName().matches(".*\.java$")){ // 匹配java格式的文件
    				count(f);
    				System.out.println(f);
    			}
    		}
    		System.out.println("统计文件:" + files);
    		System.out.println("代码行数:" + codeLines);
    		System.out.println("注释行数:" + commentLines);
    		System.out.println("空白行数:" + blankLines);
    	}
    	
    	static long files = 0;
    	static long codeLines = 0;
    	static long commentLines = 0;
    	static long blankLines = 0;
    	static ArrayList<File> fileArray = new ArrayList<File>();
    	
    	/**
    	 * 获得目录下的文件和子目录下的文件
    	 * @param f
    	 * @return
    	 */
    	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;
    
    	}
    
    	/**
    	 * 统计方法
    	 * @param f
    	 */
    	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++;
    				}
    			}
    			files++;
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		} finally {
    			if (br != null) {
    				try {
    					br.close();
    					br = null;
    				} catch (IOException e) {
    					e.printStackTrace();
    				}
    			}
    		}
    	}
    }
    

      

  • 相关阅读:
    oracle的安装与plsql的环境配置
    Working with MSDTC
    soapui-java.lang.Exception Failed to load url
    Oracle 一个owner访问另一个owner的table,不加owner
    Call API relation to TLS 1.2
    Call API HTTP header Authorization: Basic
    VS2008 .csproj cannot be opened.The project type is not supported by this installat
    The changes couldn't be completed.Please reboot your computer and try again.
    Create DB Table View Procedure
    DB Change
  • 原文地址:https://www.cnblogs.com/guoziyi/p/10037226.html
Copyright © 2011-2022 走看看