【摸】统计工程文件数、代码行数、行注释覆盖率

确实真的有人问写了多少行代码,emmm,摸了,摸爆。

代码行数、工程文件数

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;

public class FileCount {

    private static int countFile = 0;
    private static int countLine = 0;

    public static void main(String[] args) {
    	// 这里为需统计路径
        count(new File("D:\\Java\\IntelliJWorks\\xxx\\src\\main\\java\\com\\xxx"));
        System.out.println("文件数:" + countFile);
        System.out.println("总行数:" + countLine);
    }

    private static void count(File file) {
        File[] files = file.listFiles();
        for (File f : files) {
            if (f.isDirectory()) {
                count(f);
            }
            if (f.isFile()) {
                countFile++;
                System.out.println(f.getAbsolutePath());
                try {
                    FileReader fileReader = new FileReader(f);
                    LineNumberReader lineNumberReader = new LineNumberReader(fileReader);
                    int linenumber = 0;
                    while (lineNumberReader.readLine() != null) {
                        linenumber++;
                    }
                    System.out.println("行数 : " + linenumber);
                    countLine = countLine + linenumber;
                    lineNumberReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

行注释覆盖率

代码评审要求“代码行注释率必须大于10%”。

import java.io.*;
import java.text.DecimalFormat;

public class FileCount {

    //文件数
    private static int countFile = 0;

    //代码总行数
    private static int countLine = 0;

    //代码行注释数
    private static int countNotes = 0;


    public static void main(String[] args) {
        // 这里为需统计路径
        count(new File("D:\\Java\\IntelliJWorks\\xxx"));
        System.out.println("文件数:" + countFile);
        System.out.println("总行数:" + countLine);
        System.out.println("行注释数:" + countNotes);
        DecimalFormat decimalFormat = new DecimalFormat("0.00");
        System.out.println("注释覆盖率:" + decimalFormat.format(((float) countNotes / (float) countLine) * 100) + "%");
    }

    private static void count(File file) {
        File[] files = file.listFiles();
        for (File f : files) {
            if (f.isDirectory()) {
                count(f);
            }
            if (f.isFile()) {
                countFile++;
                // 当前文件名
                System.out.println(f.getAbsolutePath());
                try {
                    FileReader fileReader = new FileReader(f);
                    LineNumberReader lineNumberReader = new LineNumberReader(fileReader);
                    int lineNumber = 0;
                    while (lineNumberReader.readLine() != null) {
                        lineNumber++;
                    }
                    // 当前文件行数
                    System.out.println("行数 : " + lineNumber);
                    countLine = countLine + lineNumber;
                    lineNumberReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                // 获取注释行
                String tempStr = "";
                try (FileInputStream fileInputStream = new FileInputStream(f);
                     InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8");
                     BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
                ) {
                    while ((tempStr = bufferedReader.readLine()) != null) {
                        if (tempStr.contains("//")) {
                            countNotes += 1;
                        }
                    }
                } catch (IOException e) {
                    System.out.println("注释率获取失败");
                }
            }
        }
    }
}

艹,好不容易认真写一版注释,你居然要求的这么彻底
一个表情包,失效了不影响代码查看

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值