0

是否可以使用 检测实例类型checkstyle?例如,我有类似的代码块

class A {
... 

   private void method test() {
    ....
    throw new MyCustomException("Some message");
  }
}

在这种情况下,我想获得 MyCustomException 的真实实例。我知道我们可以TokenTypes.LITERAL_NEW在自定义插件中使用,但在这种情况下,我只能获取异常的名称,但不能获取实例类型(我没有此异常类型的地址)。

4

1 回答 1

0

由于您想要的是异常的类路径,因此您必须模拟 Java 如何从源代码中确定类路径。

这需要您检查导入和包。您将无法使用 Checkstyle 完全确定这一点,因为它只查看单个文件,而 Java 实际上查看多个文件夹位置,但您可以非常接近。

首先查找具有该确切类名的导入。如果没有导入,则选择是来自java.lang包或正在检查的文件的当前包。java.lang您应该为要自动识别的任何异常(如果有)建立一个列表。该列表中的任何其他内容都将默认为文件的包声明。

如果您希望查看示例,Checkstyle 中有一些检查可以实现此逻辑。

于 2020-11-23T19:42:08.897 回答