- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
您好,我根据 java-web-plugin 3.5 的一些检查(依赖于 java-checks 3.5 的 pom)为 Sonar 5.1.2 编写了自己的插件,当我尝试对项目运行分析时出现错误:
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 的检查工作正常。
最佳答案
这是因为类 SemanticModel 并非设计用于自定义规则,也不是 API 的一部分。因此,您在运行时遇到错误,因为此类不可用,而我们不能“禁止”您在编译期间使用它。请看http://sonarqube-archive.15.x6.nabble.com/How-to-use-JavaFileScannerContext-getSemanticModel-td5029996.html更多细节。这个限制是通过 SonarQube 插件打包完成的。我想错误消息应该是明确的(是的,这是轻描淡写的说法)。
如果您想访问语义信息,请使用树节点中的语义 API 来访问符号和类型。
关于java - Sonarqube 错误 java.lang.ClassCastException : org. sonar.java.resolve.SemanticModel 无法转换为 org.sonar.java.resolve.SemanticModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32611869/
在某些情况下,当我尝试获取语法节点的 ISymbol 时,使用 SemanticModel.GetSymbolInfo 会失败(获取 null),但使用 SemanticModel.GetDeclar
您好,我根据 java-web-plugin 3.5 的一些检查(依赖于 java-checks 3.5 的 pom)为 Sonar 5.1.2 编写了自己的插件,当我尝试对项目运行分析时出现错误:
我正在研究 Roslyn extension警告未 protected .Value访问 Nullable值(value)观。 这提供了以下行为: 这个扩展已经可以工作了,但是测试访问是否“安全”的代
从我刚刚创建的 ClassDeclaration 中获取 ISymbol 的最简单方法是什么? 考虑以下代码: AdhocWorkspace workspace = new AdhocWorkspac
在许多不同的情况下,我使用 Roslyn 在 SemanticModel 中搜索一个符号,但找不到它。 var sm = compilation.GetSemanticModel(tree); sm.
为了找到 ExpressionSyntax 实例的目标,我调用了 mySemanticModel.GetSymbolInfo(myExpressionSyntax)。 我有几个 SemanticMod
我在解决 Roslyn 中的某些类型时遇到问题。 大多数时候它按预期工作 但是在某些情况下,在某些文件中,某些类型无法解析。 这是我用来处理类型的代码: private string GetTypeN
我试图从 ObjectCreationExpressionSyntax 对象获取类型信息但失败了。 这是重现问题的示例(请参阅代码中的“ti.Type is null”): using Microso
我正在编写一个 Visual Studio 2015 扩展,它查看用户右键单击的类的内容。 我有 ProjectItem,但是如何从中获取 SemanticModel(和 SyntaxTree)? 我
我是一名优秀的程序员,十分优秀!