【问题标题】:Pattern Matching On Java Syntax (Checkstyle)Java 语法上的模式匹配(Checkstyle)
【发布时间】:2013-10-31 08:37:23
【问题描述】:

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

现在,至于对cmets的识别,我都弄明白了,但是现在我面临着如何让它识别Java Code的问题。

是否已经有任何集合提供了这些功能?在某些情况下,仅检查某些关键字(如修饰符、类型、范围等)会过于模糊。

tl;dr: 寻找一种方法来找出一个字符串是否是 java 代码(模式匹配)

【问题讨论】:

    标签: java syntax pattern-matching checkstyle


    【解决方案1】:

    很难确定一行是否是 Java 代码,因为一行可能只有一个 }。也就是说,如果您想检查 FILE 是否为 java,则有一些不错的 Regex 选项适合您,主要是因为您可以查看某行的上下文。 即使您使用这些,您也可以制作一个特定的文件,该文件将被检测为好像是 Java,而实际上并非如此。也就是说,它适用于大多数(如果不是所有)“正常”文件。

    如果您正在寻找正则表达式,您可能想在 StackOverflow 上寻找类似的威胁,因为周围应该有一些(我之前自己使用过一个)。但是,如果您真的想在 Checkstyle 中执行此操作,那么您可能不走运...

    【讨论】:

      【解决方案2】:

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

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

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

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

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

      ^//.*
      

      【讨论】:

        猜你喜欢
        • 2011-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-30
        • 2011-04-13
        相关资源
        最近更新 更多