Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Checkstyle实例_Java_Checkstyle_Maven Checkstyle Plugin - Fatal编程技术网

Java Checkstyle实例

Java Checkstyle实例,java,checkstyle,maven-checkstyle-plugin,Java,Checkstyle,Maven Checkstyle Plugin,是否可以使用checkstyle检测实例类型? 例如,我有如下代码块 class A { ... private void method test() { .... throw new MyCustomException("Some message"); } } 在本例中,我希望获得MyCustomException的真实实例。 我知道我们可以在自定义插件中使用TokenTypes.LITERAL\u NEW,但在这种情况下,我只能获取异常的名

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

class A {
... 

   private void method test() {
    ....
    throw new MyCustomException("Some message");
  }
}
在本例中,我希望获得MyCustomException的真实实例。
我知道我们可以在自定义插件中使用
TokenTypes.LITERAL\u NEW
,但在这种情况下,我只能获取异常的名称,而不能获取实例类型(我没有此异常类型的地址)。

因为您需要的是异常的类路径,所以必须模拟Java如何从源代码确定类路径

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

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


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

您需要在示例中提供更多详细信息。我很困惑,你可以得到名称,
MyCustomException
,但这不是你要找的实例类型。您正在寻找的“正确”值是什么?它有什么不同?您在查找异常的完整类路径还是其他内容?@rveach是的,我想获取异常/类的类路径,但在当前的实现中不可能<代码>我很困惑,你可以得到名称MyCustomException,但这不是你要找的实例类型-你只能得到名称,不能得到实例。你说的是实例,但你真正的意思是类路径。实例是在内存中创建对象。你不是在模拟Java,所以你没有分配这个对象。如果我知道类路径,我可以得到实例,这很明显。如果你认为你可以在Checkstyle内的内存中实例化该类,那么你应该知道这不直接受支持,并且要求你的代码和Checkstyle位于同一类路径上,并共享类加载器。根据您调用Checkstyle的方式,您可能无法获得相同的类加载器,甚至可能无法使用所有这些信息进行实例化。我相信maven checkstyle插件就是一个这样做行不通的例子。例如,如果您创建了一个异常,并且希望使用Checkstyle处理它,那么应该将该文件添加到某个列表中。我想通过这种方法,我们将得到比利润更复杂的逻辑。但无论如何,感谢您的回复。并非所有自定义异常都将出现在您控制的源代码中。Trowable和Exception在JRE中定义,Checkstyle将无权访问它们。第三方jar也是如此。如果你想知道类来自哪里,你必须遵循导入。您可以进行更复杂的检查以将其他文件的信息保存在内存中,但Checkstyle还不能直接支持它。