您好,我基于java-web-plugin 3.5的一些检查为sonar 5.1.2编写了自己的插件(java-web- plugin 3.5在pom中的依赖项),当我试图对项目运行分析时,我得到了错误:
Caused by: java.lang.ClassCastException: org.sonar.java.resolve.SemanticModel cannot be cast to org.sonar.java.resolve.SemanticModel
at org.sonar.java.checks.SubscriptionBaseVisitor.scanFile(SubscriptionBaseVisitor.java:32)
at org.sonar.java.model.VisitorsBridge.visitFile(VisitorsBridge.java:123)
at org.sonar.java.ast.JavaAstScanner.simpleScan(JavaAstScanner.java:94)
... 38 more例如,我从BadMethodName_S00100_Check.java复制到我的插件代码中,只更改了类名、描述和问题信息。为什么我会得到错误?其他不使用semanticModel的检查也能正常工作。
发布于 2015-09-17 01:09:27
这是因为类SemanticModel不是为在自定义规则中使用而设计的,也不是应用程序接口的一部分。因此,你在运行时遇到一个错误,因为这个类不可用,而我们不能“禁止”你在编译期间使用它。更多详情请查看http://sonarqube-archive.15.x6.nabble.com/How-to-use-JavaFileScannerContext-getSemanticModel-td5029996.html。这个限制是通过SonarQube插件打包来实现的。我猜错误消息应该是明确的(是的,这是一个轻描淡写的说法)。
如果您想访问语义信息,请使用树节点的语义API来访问符号和类型。
https://stackoverflow.com/questions/32611869
复制相似问题