Code de classe d'outils, obtenez le nombre total de lignes de tous les fichiers Java dans le projet actuel, le nombre de lignes de code, le nombre de commentaires et le nombre de lignes vierges
La copie de code est la suivante:
Importer java.io.bufferedReader;
Importer java.io.file;
import java.io.fileInputStream;
import java.io.filenotfoundException;
import java.io.fileReader;
Importer java.io.ioException;
Importer java.io.reader;
import java.util.regex.matcher;
import java.util.regex.pattern;
/ **
*
* @Author Administrator
*
* /
classe publique Javacode {
chaîne finale statique privée project_dir = "c: // test";
INT TOTLE STATIQUE privé = 0; // Nombre total de lignes
private static int source = 0; // nombre de lignes de code
INT STATIQUE privé = 0; // Nombre de lignes vierges
commentaires privés statiques INT = 0; // Nombre de commentaires
/ **
* Lire les fichiers Java dans le dossier
* @param dir
* /
private static void listNext (fichier dir) {
File [] files = dir.listFiles ();
for (int i = 0; i <files.length; i ++) {
// discerner si c'est un dossier.
if (files [i] .isDirectory ()) {
listNext (fichiers [i]);
} autre {
essayer {
if (files [i] .getName (). Endswith (". Java")) {
System.out.println (fichiers [i] .getAbsolutepath ());
javaline (fichiers [i]);
}
} catch (exception e) {
e.printStackTrace ();
}
}
}
}
/ **
* Lire le nombre total de lignes de fichier java, nombre de lignes de code, nombre de lignes vierges, nombre de lignes de commentaires
* @param f
* @throws ioexception
* @throws filenotfoundException
* /
Javaline statique privé (fichier f) lève FileLoTFoundException, ioException {
String strline = "";
String str = fromfile (f);
if (str.length ()> 0) {
while (str.indexof ('/ n')! = -1) {
totle ++;
//System.out.println(totle);
strLine = str.substring (0, str.indexof ('/ n')). Trim ();
// str = str.substring (str.indexof ('/ n') + 1, str.length ());
if (strline.length () == 0) {
blanc ++;
} else if (strline.charat (0) == '*' || strline.charat (0) == '/') {
commentaires ++;
}autre{
source ++;
Chaîne regex = "^ * //";
if (regex (strline, regex)) {
commentaires ++;
}
}
str = str.substring (str.indexof ('/ n') + 1, str.length ());
}
}
}
/ **
* Lisez le fichier Java en tant que tableau de caractères
* @param f
* @retour
* @throws filenotfoundException
* @throws ioexception
* /
chaîne statique privée FromFile (fichier f) lève FileLoTFoundException, ioException {
FileInputStream fis = new FileInputStream (f);
octet [] b = nouveau octet [(int) f.length ()];
fis.read (b);
fis.close ();
retourner la nouvelle chaîne (b);
}
/ **
* Match régulier
* @Param Str Entrez la chaîne
* @param regex chaîne de correspondance régulière
* @retour
* /
Regex booléen statique privé (String Str, String Regex) {
Pattern p = motif.compile (regex);
Matcher m = p.matcher (str);
Boolean Result = M.Find ();
Résultat de retour;
}
public static void Main (String [] args) lève FileLoTFoundException, ioException {
// file root = new File (project_dir);
Directory de fichiers = nouveau fichier (""); // Le paramètre est vide
// Obtenez le chemin du projet
String projectFile = Directory.getCanonicalPath ();
System.out.println (ProjectFile + "=======================================================. =======);
listNext (nouveau fichier (projectFile));
System.out.println (totle + 1);
System.out.println (source);
System.out.println (vierge);
System.out.println (commentaires);
}
}