确实真的有人问写了多少行代码,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("注释率获取失败");
}
}
}
}
}
艹,好不容易认真写一版注释,你居然要求的这么彻底