• Find Method Sign Line Number


     1 package java9;
     2 
     3 import java.io.IOException;
     4 import java.nio.file.Files;
     5 import java.nio.file.Paths;
     6 import java.util.List;
     7 import java.util.regex.Pattern;
     8 
     9 public class TTT {
    10 
    11     public static void main(String args[]) throws IOException {
    12 
    13         List<String> readAllLines = Files.readAllLines(Paths
    14                 .get("/Users/hongtaowang/git/spring-boot-jpa-demo/src/main/java/com/my/app/web/IndexController.java"));
    15 
    16         int issueLine = 29;
    17 
    18         String preMethodSignNumber = getPreMethodSignNumber(issueLine, readAllLines);
    19 
    20         System.out.println(preMethodSignNumber);
    21 
    22         String preSignEndChar = getPreSignEndChar(readAllLines, issueLine);
    23 
    24         System.out.println(preSignEndChar);
    25 
    26     }
    27 
    28     private static String getPreSignEndChar(List<String> readAllLines, int issueLine) {
    29         int nextMethodSignLine = getNextMethodSignNumber(issueLine, readAllLines);
    30 
    31         for (int endLineNumber = nextMethodSignLine - 1; endLineNumber > 0; endLineNumber--) {
    32             String endChar = readAllLines.get(endLineNumber - 1);
    33 
    34             if (endChar.contains("}")) {
    35                 return (endLineNumber) + " end     line " + endChar;
    36             }
    37 
    38         }
    39 
    40         return "";
    41     }
    42 
    43     private static int getNextMethodSignNumber(int i, List<String> readAllLines) {
    44         int j = i;
    45         for (; j < readAllLines.size(); j++) {
    46             String p = readAllLines.get(j - 1);
    47             boolean extracted = matchMethodSign(p);
    48             if (extracted) {
    49                 break;
    50             }
    51 
    52         }
    53         return j;
    54     }
    55 
    56     private static String getPreMethodSignNumber(int currentLine, List<String> readAllLines) {
    57         for (int preLine = currentLine - 1; preLine > 0; preLine--) {
    58             String preLineSource = readAllLines.get(preLine - 1);
    59 
    60             if (matchMethodSign(preLineSource)) {
    61                 return (preLine) + " end     line " + preLineSource;
    62             }
    63 
    64         }
    65 
    66         return "";
    67     }
    68 
    69     private static boolean matchMethodSign(String d) {
    70         String pattern = ".*[A-z].* .*[A-z1-9]\(.*";
    71         boolean isMatch = Pattern.matches(pattern, d);
    72         if (!isMatch) {
    73             return false;
    74         }
    75 
    76         if (d.contains("return")) {
    77             return false;
    78         }
    79 
    80         if (d.contains("=")) {
    81             return false;
    82         }
    83 
    84         return true;
    85     }
    86 
    87 }
  • 相关阅读:
    Git centos 6.5 搭建(gitosis)
    error at ::0 can't find referenced pointcut xxx
    MySql 主从配置
    svn 搭建
    Flatbuffers学习
    python3 获取函数变量
    pyqt5 重启相同线程错误:QThread: Destroyed while thread is still running
    WIN10 使用注册表设置单应用KIOSK模式(不限win10版本)
    WIN10 使用POWERSHELL 设置单应用KIOSK模式(win10家庭版或企业版)
    py文件加密打包成exe文件
  • 原文地址:https://www.cnblogs.com/wblade/p/11404130.html
Copyright © 2020-2023  润新知