是否可以使用checkstyle检测实例类型?例如,我有像这样的代码块
class A {
...
private void method test() {
....
throw new MyCustomException("Some message");
}
}在本例中,我希望获得MyCustomException的真实实例。我知道我们可以在自定义插件中使用TokenTypes.LITERAL_NEW,但在这种情况下,我只能获得异常的名称,而不能获得实例类型(我没有这个异常类型的地址)。
发布于 2020-11-24 03:42:09
由于您需要的是异常的类路径,因此必须模拟Java如何从源代码确定类路径。
这需要您检查导入和包。使用Checkstyle无法完全确定这一点,因为它只查看单个文件,而Java实际上查看多个文件夹位置,但您可以非常接近。
首先查找具有该类名的导入。如果没有导入,则可以选择是否来自正在检查的文件的java.lang包或当前包。您应该为要自动识别的任何java.lang异常(如果有)构建一个列表。该列表中的任何其他内容都将默认为文件的包声明。
如果您希望查看示例,Checkstyle中有一些实现此逻辑的检查。
https://stackoverflow.com/questions/64926423
复制相似问题