首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sonarqube错误java.lang.ClassCastException:无法将org.sonar.java.resolve.SemanticModel强制转换为org.sonar.java.resolve.SemanticModel

Sonarqube错误java.lang.ClassCastException:无法将org.sonar.java.resolve.SemanticModel强制转换为org.sonar.java.resolve.SemanticModel
EN

Stack Overflow用户
提问于 2015-09-16 22:44:36
回答 1查看 1.3K关注 0票数 4

您好,我基于java-web-plugin 3.5的一些检查为sonar 5.1.2编写了自己的插件(java-web- plugin 3.5在pom中的依赖项),当我试图对项目运行分析时,我得到了错误:

代码语言:javascript
复制
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的检查也能正常工作。

EN

回答 1

Stack Overflow用户

发布于 2015-09-17 01:09:27

这是因为类SemanticModel不是为在自定义规则中使用而设计的,也不是应用程序接口的一部分。因此,你在运行时遇到一个错误,因为这个类不可用,而我们不能“禁止”你在编译期间使用它。更多详情请查看http://sonarqube-archive.15.x6.nabble.com/How-to-use-JavaFileScannerContext-getSemanticModel-td5029996.html。这个限制是通过SonarQube插件打包来实现的。我猜错误消息应该是明确的(是的,这是一个轻描淡写的说法)。

如果您想访问语义信息,请使用树节点的语义API来访问符号和类型。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32611869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档