Hi,
I’m currently in the process of updating our custom rule plugin to the latest version of SonarQube community server. I’ve checked sonarsoure/sonar-plugin-api which version to use for the server (although checking which API plugin is provided by sonarsource/sonar-java in Maven Central and checking witch sonar-java plugin is included by the community server, the versions don’t seem to match).
However, after bumping the versions and executing my tests any test that uses org.sonar.java.checks.verifier.CheckVerifier throws a java.lang.VerifyError:
java.lang.VerifyError: Bad type on operand stack
Exception Details:
Location:
org/eclipse/jdt/core/JavaCore.getGeneratedResources(Lorg/eclipse/jdt/core/IRegion;Z)[Lorg/eclipse/core/resources/IResource; @391: invokestatic
Reason:
Type 'org/eclipse/jdt/core/JavaModelException' (current frame, stack[1]) is not assignable to 'java/lang/Exception'
Current Frame:
bci: @391
flags: { }
locals: { 'org/eclipse/jdt/core/IRegion', integer, '[Lorg/eclipse/jdt/core/IJavaElement;', 'java/util/HashMap', 'java/util/ArrayList', 'org/eclipse/jdt/core/IJavaElement', integer, integer, '[Lorg/eclipse/jdt/core/IJavaElement;', 'org/eclipse/jdt/core/IJavaProject', 'org/eclipse/core/resources/IProject', 'org/eclipse/jdt/internal/core/builder/State', 'org/eclipse/jdt/internal/core/builder/State', 'org/eclipse/core/runtime/IPath', 'org/eclipse/jdt/core/IJavaElement', 'org/eclipse/jdt/core/IPackageFragmentRoot', integer, 'org/eclipse/jdt/core/JavaModelException' }
stack: { 'java/lang/String', 'org/eclipse/jdt/core/JavaModelException' }
Bytecode:
<snip>
at org.eclipse.jdt.core.dom.ASTParser.initializeDefaults(ASTParser.java:332)
at org.eclipse.jdt.core.dom.ASTParser.<init>(ASTParser.java:233)
at org.eclipse.jdt.core.dom.ASTParser.newParser(ASTParser.java:133)
at org.sonar.java.model.JParserConfig.astParser(JParserConfig.java:117)
at org.sonar.java.model.JParserConfig$FileByFile.parse(JParserConfig.java:250)
at org.sonar.java.ast.JavaAstScanner.scan(JavaAstScanner.java:116)
at org.sonar.java.ast.JavaAstScanner.scanForTesting(JavaAstScanner.java:104)
at org.sonar.java.checks.verifier.internal.JavaCheckVerifier.createVerifier(JavaCheckVerifier.java:126)
at org.sonar.java.checks.verifier.internal.JavaCheckVerifier.verifyIssues(JavaCheckVerifier.java:368)
I’ve checked that the plugin does not depend on any impl-artifact and that our pom.xml matches [pom_SQ_10_6_LATEST]( sonar-java/docs/java-custom-rules-example/pom_SQ_10_6_LATEST.xml at master · SonarSource/sonar-java · GitHub ) from the custom rule example.
The error occurs when using using maven clean verify, but also when executing any such test from Eclipse.
I’ve upgraded from Java 17 to 25 without issues beforehand.
Versions from/to:
sonar.plugin.api.version: 9.14.0.375 -> 13.5.0.4319
sonarjava.version: 7.16.0.30901 -> 8.29.0.43460
Targeted SonarQube Community Server:
26.5.0.122743
The only topic with the same error is Weird Java error when trying to use a custom SubscriptionVisitor , but none of our rules extend org.sonar.java.ast.visitors.SubscriptionVisitor directly or uses org.sonar.java.model.VisitorsBridge. So any help would be much appreciated.
Thanks in advance,
Oliver