Modify Critic

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1302 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
alfred 2006-08-17 05:06:49 +00:00
parent daa4663bdd
commit a756211f3f
2 changed files with 35 additions and 36 deletions

View File

@ -29,6 +29,14 @@ public class Common {
return wholefile.toString();
}
public static void string2file(String content, String filename) throws Exception {
ensureDir(filename);
PrintWriter outfile = new PrintWriter(new BufferedWriter(new FileWriter(filename)));
outfile.append(content);
outfile.flush();
outfile.close();
}
public static void ensureDir(String objFileWhole) {
File tempdir;
Matcher mtrseparate = ptnseparate.matcher(objFileWhole);
@ -38,14 +46,6 @@ public class Common {
}
}
public static void string2file(String content, String filename) throws Exception {
ensureDir(filename);
PrintWriter outfile = new PrintWriter(new BufferedWriter(new FileWriter(filename)));
outfile.append(content);
outfile.flush();
outfile.close();
}
public static HashSet<String> dirScan(String path) { // use HashSet, persue speed rather than space
HashSet<String> filelist = new HashSet<String>();
String[] list = new File(path).list();
@ -63,6 +63,14 @@ public class Common {
return filelist;
}
public static String replaceAll(String line, Pattern ptn, String des) {
Matcher mtr = ptn.matcher(line);
if (mtr.find()) {
return mtr.replaceAll(des);
}
return line;
}
public static String dirCopy_(String src) throws Exception {
Matcher mtrseparate = Common.ptnseparate.matcher(src);
if (mtrseparate.find()) {

View File

@ -15,46 +15,36 @@ package org.tianocore.migration;
import java.util.regex.*;
public class Critic implements Common.ForDoAll {
Critic() {
filepath = null;
}
Critic(String path) {
filepath = path;
}
private String filepath = null;
private static Pattern ptnheadcomment = Pattern.compile("^\\/\\*\\+\\+(.*?)\\-\\-\\*\\/",Pattern.DOTALL);
private static Matcher mtrheadcomment;
private static Pattern ptnfunccomment = Pattern.compile("([\\w\\d]*\\s*[_\\w][_\\w\\d]*\\s*\\([^\\)\\(]*\\)\\s*)(\\/\\*\\+\\+.*?)(\\-\\-\\*\\/\\s*)(.*?)([\\{;])",Pattern.DOTALL);
private static Matcher mtrfunccomment;
private static Pattern ptncommentstructure = Pattern.compile("Routine Description:\\s*(\\w.*?\\w)\\s*Arguments:(\\s*\\w.*?\\w\\s*)Returns:(\\s*\\w.*?\\w\\s*)&%",Pattern.DOTALL);
private static Matcher mtrcommentstructure;
private static Pattern ptntempcomment = Pattern.compile("\\/\\*\\+\\+(.*?)\\-\\-\\*\\/\\s*[\\w\\d]*\\s*[_\\w][_\\w\\d]*\\s*\\([^\\)\\(]*\\)",Pattern.DOTALL);
private static Matcher mtrtempcomment;
private static Pattern ptninfequation = Pattern.compile("([^\\s]*)\\s*-\\s*(\\w.*\\w)");
private static Pattern ptncommentstructure = Pattern.compile("\\/\\*\\+\\+\\s*Routine Description:\\s*(.*?)\\s*Arguments:\\s*(.*?)\\s*Returns:\\s*(.*?)\\s*\\-\\-\\*\\/",Pattern.DOTALL);
private static Pattern ptninfequation = Pattern.compile("#%%\\s*([^\\s]*\\s*-\\s*.*\\s*)*",Pattern.MULTILINE);
private static Matcher mtrinfequation;
public void toDo(String filepath) throws Exception {
String funccomment = null;
if (filepath.contains(".c") || filepath.contains(".h")) {
System.out.println("Criticing " + filepath);
String wholeline = Common.file2string(filepath);
// find head comment
mtrheadcomment = ptnheadcomment.matcher(wholeline);
if (mtrheadcomment.find()) { //as we find only the head comment here, use 'if' not 'while'
wholeline = mtrheadcomment.replaceFirst("/** @file$1**/");
}
wholeline = Common.replaceAll(wholeline, ptnheadcomment, "/** @file$1**/");
wholeline = Common.replaceAll(wholeline, ptnfunccomment, "$2$3$4$1$5");
wholeline = Common.replaceAll(wholeline, ptncommentstructure, "/**\n#%\n$1\n%#\n#%%\n$2\n%%#\n#%%%\n$3\n%%%#\n**/");
// find func comment
mtrfunccomment = ptnfunccomment.matcher(wholeline);
/* -----slow edition of replacefirst with stringbuffer-----
line.append(wholeline);
mtrfunccomment = ptnfunccomment.matcher(line);
while (mtrfunccomment.find()) {
funccomment = mtrfunccomment.group(2) + "&%";
mtrcommentstructure = ptncommentstructure.matcher(funccomment);
wholeline = mtrfunccomment.replaceAll("$2$4$3$1$5");
line.replace(0, line.length()-1, mtrfunccomment.replaceFirst("$2$4$3$1$5"));
}
*/
/* -----slow edition of replacefirst with string-----
while ((mtrfunccomment = ptnfunccomment.matcher(wholeline)).find()) {
//funccomment = mtrfunccomment.group(2);
//mtrcommentstructure = ptncommentstructure.matcher(funccomment);
wholeline = mtrfunccomment.replaceFirst("$2$4$3$1$5");
}
*/
/*
// edit func comment
mtrtempcomment = ptntempcomment.matcher(wholeline);
while (mtrtempcomment.find()) {
@ -62,6 +52,7 @@ public class Critic implements Common.ForDoAll {
System.out.println(mtrtempcomment.group());
System.out.println("-----------------------------");
}
*/
Common.string2file(wholeline, filepath);
}
}