]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/MigrationTools/org/tianocore/migration/Critic.java
Many Many Modifies
[mirror_edk2.git] / Tools / Source / MigrationTools / org / tianocore / migration / Critic.java
index 23ad95abfcad28016368a0d3307a4faef2d63f02..962574645cfccc6ebb3407650b4819f1070899a8 100644 (file)
@@ -15,23 +15,23 @@ package org.tianocore.migration;
 import java.util.regex.*;\r
 import java.io.*;\r
 \r
-public class Critic implements Common.ForDoAll {\r
+public class Critic {\r
        private static Pattern ptnheadcomment = Pattern.compile("^\\/\\*\\+\\+(.*?)\\-\\-\\*\\/",Pattern.DOTALL);\r
        private static Pattern ptnfunccomment = Pattern.compile("([\\};\\/]\\s*)([\\w\\s]*?[_\\w][_\\w\\d]*\\s*\\([^\\)\\(]*\\)\\s*)\\/\\*\\+\\+(.*?)\\-\\-\\*\\/(\\s*.*?)([\\{;])",Pattern.DOTALL);\r
        //private static Pattern ptncommentstructure = Pattern.compile("\\/\\*\\+\\+\\s*Routine Description:\\s*(.*?)\\s*Arguments:\\s*(.*?)\\s*Returns:\\s*(.*?)\\s*\\-\\-\\*\\/",Pattern.DOTALL);\r
-       private static Pattern ptninfequation = Pattern.compile("([^\\s]*)\\s*-\\s*(.*)\\s*");\r
-       private static Matcher mtrinfequation;\r
+       private static Pattern ptncommentequation = Pattern.compile("([^\\s]*)\\s+-\\s+(.*)\\s*");\r
+       private static Matcher mtrcommentequation;\r
+       private static Pattern ptnnewcomment = Pattern.compile("(\\s*@(param|retval)\\s+[^\\s]+)\\s+(.*)");\r
+       private static Matcher mtrnewcomment;\r
        \r
-       public void toDo(String filepath) throws Exception {\r
+       private static final int totallinelength = 82;\r
+       \r
+       public static final void critic(String filepath) throws Exception {\r
                if (filepath.contains(".c") || filepath.contains(".h")) {\r
                        BufferedReader rd = null;\r
                        String line = null;\r
                        StringBuffer templine = new StringBuffer();\r
                        boolean incomment = false;\r
-                       boolean description = false;\r
-                       boolean arguments = false;\r
-                       boolean returns = false;\r
-                       boolean inequation = false;\r
 \r
                        System.out.println("Criticing   " + filepath);\r
                        String wholeline = Common.file2string(filepath);\r
@@ -40,7 +40,12 @@ public class Critic implements Common.ForDoAll {
                        wholeline = Common.replaceAll(wholeline, ptnheadcomment, "/** @file$1**/");\r
                        wholeline = Common.replaceAll(wholeline, ptnfunccomment, "$1/**$3**/$4$2$5");\r
                        //wholeline = Common.replaceAll(wholeline, ptncommentstructure, "/**\n#%\n$1\n%#\n#%%\n$2\n%%#\n#%%%\n$3\n%%%#\n**/");\r
-                       \r
+\r
+                       // first scan\r
+                       boolean description = false;\r
+                       boolean arguments = false;\r
+                       boolean returns = false;\r
+                       boolean inequation = false;\r
                        rd = new BufferedReader(new StringReader(wholeline));\r
                        while ((line = rd.readLine()) != null) {\r
                                if (line.matches("\\/\\*\\*")) {\r
@@ -62,32 +67,32 @@ public class Critic implements Common.ForDoAll {
                                        arguments = false;\r
                                        returns = true;\r
                                } else if (incomment && description) {\r
-                                       templine.append(line + "\n");\r
+                                       templine.append("  " + line.trim() + "\n");\r
                                } else if (incomment && arguments) {\r
-                                       mtrinfequation = ptninfequation.matcher(line);\r
-                                       if (mtrinfequation.find()) {\r
+                                       mtrcommentequation = ptncommentequation.matcher(line);\r
+                                       if (mtrcommentequation.find()) {\r
                                                inequation = true;\r
-                                               templine.append("  @param " + mtrinfequation.group(1) + "     " + mtrinfequation.group(2) + "\n");\r
+                                               templine.append("  @param  " + mtrcommentequation.group(1) + "     " + mtrcommentequation.group(2) + "\n");\r
                                        } else if (inequation && line.trim().length() == 0) {\r
                                                inequation = false;\r
                                                templine.append(line + "\n");\r
                                        } else if (inequation && line.trim().length() != 0) {\r
                                                templine.append("#%#%" + line + "\n");\r
                                        } else {\r
-                                               templine.append(line + "\n");\r
+                                               templine.append("  " + line.trim() + "\n");\r
                                        }\r
                                } else if (incomment && returns) {\r
-                                       mtrinfequation = ptninfequation.matcher(line);\r
-                                       if (mtrinfequation.find()) {\r
+                                       mtrcommentequation = ptncommentequation.matcher(line);\r
+                                       if (mtrcommentequation.find()) {\r
                                                inequation = true;\r
-                                               templine.append("  @retval " + mtrinfequation.group(1) + "     " + mtrinfequation.group(2) + "\n");\r
+                                               templine.append("  @retval " + mtrcommentequation.group(1) + "     " + mtrcommentequation.group(2) + "\n");\r
                                        } else if (inequation && line.trim().length() == 0) {\r
                                                inequation = false;\r
                                                templine.append(line + "\n");\r
                                        } else if (inequation && line.trim().length() != 0) {\r
                                                templine.append("#%#%" + line + "\n");\r
                                        } else {\r
-                                               templine.append(line + "\n");\r
+                                               templine.append("  " + line.trim() + "\n");\r
                                        }\r
                                } else {\r
                                        templine.append(line + "\n");\r
@@ -95,6 +100,79 @@ public class Critic implements Common.ForDoAll {
                        }\r
                        wholeline = templine.toString();\r
                        wholeline = wholeline.replaceAll("\n#%#%\\s*", " ");\r
+                       //\r
+                       \r
+                       // secend scan\r
+                       int startmax = 0;\r
+                       rd = new BufferedReader(new StringReader(wholeline));\r
+                       while ((line = rd.readLine()) != null) {\r
+                               if (line.matches("\\/\\*\\*")) {\r
+                                       incomment = true;\r
+                                       templine.append(line + "\n");\r
+                               } else if (line.matches("\\*\\*\\/")) {\r
+                                       incomment = false;\r
+                                       templine.append(line + "\n");\r
+                               } else if (incomment) {\r
+                                       mtrnewcomment = ptnnewcomment.matcher(line);\r
+                                       if (mtrnewcomment.find()) {\r
+                                               startmax = mtrnewcomment.group(1).length() > startmax ? mtrnewcomment.group(1).length() : startmax;\r
+                                       }\r
+                               }\r
+                       }\r
+                       startmax++;\r
+                       //\r
+                       \r
+                       // third scan\r
+                       int n = 0;\r
+                       String temp = null;\r
+                       String[] tempcont = null;\r
+                       int count = 0;\r
+                       templine = new StringBuffer();\r
+                       rd = new BufferedReader(new StringReader(wholeline));\r
+                       while ((line = rd.readLine()) != null) {\r
+                               if (line.matches("\\/\\*\\*")) {\r
+                                       incomment = true;\r
+                                       templine.append(line + "\n");\r
+                               } else if (line.matches("\\*\\*\\/")) {\r
+                                       incomment = false;\r
+                                       templine.append(line + "\n");\r
+                               } else if (incomment) {\r
+                                       mtrnewcomment = ptnnewcomment.matcher(line);\r
+                                       if (mtrnewcomment.find()) {\r
+                                               n = startmax - mtrnewcomment.group(1).length();\r
+                                               templine.append(mtrnewcomment.group(1));\r
+                                               while (n-- >= 0) {\r
+                                                       templine.append(" ");\r
+                                               }\r
+                                               temp = mtrnewcomment.group(3);\r
+                                               tempcont = temp.split(" ");                                                     // use \\s+ ?\r
+                                               \r
+                                               count = 0;\r
+                                               for (int i = 0; i < tempcont.length; i++) {\r
+                                                       count += tempcont[i].length();\r
+                                                       if (count <= (totallinelength - startmax)) {\r
+                                                               templine.append(tempcont[i] + " ");\r
+                                                               count += 1;\r
+                                                       } else {\r
+                                                               templine.append("\n");\r
+                                                               n = startmax;\r
+                                                               while (n-- >= 0) {\r
+                                                                       templine.append(" ");\r
+                                                               }\r
+                                                               templine.append(tempcont[i] + " ");\r
+                                                               count = tempcont[i].length() + 1;\r
+                                                       }\r
+                                               }\r
+                                               templine.append("\n");\r
+                                       } else {\r
+                                               templine.append(line + "\n");\r
+                                       }\r
+                               } else {\r
+                                       templine.append(line + "\n");\r
+                               }\r
+                       }\r
+                       wholeline = templine.toString();\r
+                       //\r
                        \r
                        /* -----slow edition of replacefirst with stringbuffer-----\r
                        line.append(wholeline);\r
@@ -123,9 +201,9 @@ public class Critic implements Common.ForDoAll {
                }\r
        }\r
        \r
-       public static void fireAt(String path) throws Exception {\r
-               Critic critic = new Critic();\r
-               Common.toDoAll(Common.dirCopy_(path), critic);\r
+       public static final void fireAt(String path) throws Exception {\r
+               Common.toDoAll(Common.dirCopy_(path), Critic.class.getMethod("critic", String.class), null, null, Common.FILE);\r
+               //Common.toDoAll(Common.dirCopy_(path), critic, Common.FILE);\r
                System.out.println("Critic Done");\r
        }\r
 }\r