Java语法上的模式匹配(Checkstyle)

Java语法上的模式匹配(Checkstyle),java,syntax,pattern-matching,checkstyle,Java,Syntax,Pattern Matching,Checkstyle,我目前正在尝试创建自己的签入Checkstyle。 它应该对类中的注释代码发出警告 现在,就注释的识别而言,我已经完全弄明白了,但现在我面临的问题是如何让它识别Java代码 是否已有提供这些功能的集合?在某些情况下,仅仅检查某些关键字,如修饰符、类型、范围等,就太模糊了 tl;dr:正在寻找一种方法来确定字符串是否为java代码(模式匹配)很难确定一行是否为java代码,因为一行可能只有一个}。也就是说,如果您想检查文件是否是java,有一些很好的正则表达式选项供您选择,主要是因为您可以查看特定

我目前正在尝试创建自己的签入Checkstyle。 它应该对类中的注释代码发出警告

现在,就注释的识别而言,我已经完全弄明白了,但现在我面临的问题是如何让它识别Java代码

是否已有提供这些功能的集合?在某些情况下,仅仅检查某些关键字,如修饰符、类型、范围等,就太模糊了


tl;dr:正在寻找一种方法来确定字符串是否为java代码(模式匹配)

很难确定一行是否为java代码,因为一行可能只有一个
}
。也就是说,如果您想检查文件是否是java,有一些很好的正则表达式选项供您选择,主要是因为您可以查看特定行的上下文。 即使您使用这些,您也可以创建一个特定的文件,该文件将被检测为Java文件,而实际上不是。也就是说,即使不是所有的“普通”文件,它也适用于大多数文件


如果您正在寻找正则表达式,那么您可能希望在StackOverflow上寻找类似的威胁,因为应该有一些(我刚才也用过一个)。但是,如果您确实想在Checkstyle中执行此操作,您可能会运气不佳……

确定大量注释代码块的一个好的启发式方法是检查前面的空格。“有效”注释通常与实际代码缩进:

public class A {

   public void a() {
       // valid comment
       ...
   }

}
而使用ctrl-7注释的代码块将直接以//字符开头:

public class A {

//   public void a() {
//       // valid comment
//       ...
//   }

}
因此,正则表达式看起来像这样

^//.*