برنامه زیر به زبان جاوا نوشته شده و تعداد خطوط کد یک پروژه و فایل های اون پروژه رو حساب می کنه، یک فایل properties هم کنار برنامه قرار داره که آدرس فولدر اصلی پروژه و پسوند مورد نظر شمارو میگیره:
package com.saeed.loc;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.LineNumberReader;
import java.util.Properties;
/**
*
* @author Saeed Zarinfam
*/
public class Main {
public static final String PROP_ROOT = "root";
public static final String PROP_EXTENSION = "extension";
private String[] args;
private Properties rootProperties = new Properties();
private int totalFiles;
private long totalLOC;
public Main(String[] args) {
this.args = args;
try {
rootProperties.load(new FileInputStream("root.properties"));
} catch (Exception ex) {
System.out.println("can not found or open root.properties file. see the following exception:");
ex.printStackTrace();
System.exit(0);
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Main app = new Main(args);
app.run();
System.exit(0);
}
/**
* pars command line arguments for doing correspond action
*/
private void run() {
File rootDir = new File(rootProperties.getProperty(PROP_ROOT));
parsDirectory(rootDir);
System.out.println("total files = " + totalFiles);
System.out.println("total line of code = " + totalLOC);
}
private void parsDirectory(File dir) {
// System.out.println("current dir = "+dir.getName());
File[] files = dir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
parsDirectory(file);
} else if (file.getName().endsWith(rootProperties.getProperty(PROP_EXTENSION))){
calculateLOC(file);
}
}
}
private void calculateLOC(File file) {
System.out.println("current file = "+file.getName());
totalFiles++;
String thisLine;
try {
LineNumberReader locReader = new LineNumberReader(new FileReader(file));
while ((thisLine = locReader.readLine()) != null) { // while loop begins here
}
totalLOC += locReader.getLineNumber();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
اینم فایل properties که برای شمردن خطوط فایل های جاوا تنظیم شده:
# root directory of project
root = /home/saeed/projects/project-loc
extension = .java