有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用于正确关闭checkstyle的java正则表达式

有没有办法创建一个正则表达式来检查checkstyle(以//开头)的正确“闭包”

// CHECKSTYLE:OFF
protected void doSomething() {

}
// CHECKSTYLE:ON

// CHECKSTYLE:OFF
protected void doSomethingElse() {
// CHECKSTYLE:ON
}

如果第一个CHECKSTYLE:ON中有一个输入错误,其余的checkstyles将被忽略


共 (1) 个答案

  1. # 1 楼答案

    我不知道纯正则表达式在这里是否合适。你的问题是解析器真正关心的东西。事实上,我甚至不知道如何检测出有打字错误的// CHECKSTYLE:ON。但是,这里的一个选项是简单地逐行扫描文件,如果我们在一行中遇到两个// CHECKSTYLE:OFF,就会失败。如果发生这种情况,那么这意味着要么是完全省略了ON checkstyle,要么是错贴了

    static final String CHECK_ON = "// CHECKSTYLE:ON";
    static final String CHECK_OFF = "// CHECKSTYLE:OFF";
    
    File file = new File("your_input.ext");
    boolean checkstyleIsOn = false;
    
    try {
        Scanner sc = new Scanner(file);
        int lineNum = 0;
    
        while (sc.hasNextLine()) {
            ++lineNum;
            String line = sc.nextLine();
    
            if (CHECK_OFF.equals(line)( {
                if (!checkStyleIsOn) {
                    System.out.println("Found extra checkstyle off at line " + lineNum);
                    break;
                }
                else {
                    checkStyleIsOn = false;
                }
            }
            if (CHECK_ON.equals(line)( {
                if (checkStyleIsOn) {
                    System.out.println("Found extra checkstyle on at line " + lineNum);
                    break;
                }
                else {
                    checkStyleIsOn = true;
                }
            }
    
        }
        sc.close();
    } 
    catch (FileNotFoundException e) {
        e.printStackTrace();
    }