所以,我有一个声纳java自定义规则插件,运行在4.2.1.6971版本和SonarQube平台5.6.3。
最近我尝试将java插件依赖项更新到最新的4.9.0.9858版本,并在尝试清理安装后#39;项目我在所有单元测试中得到相同的错误:
[INFO] Running checks.security.SystemExitCallsCheckTest
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed:
0.001 s <<< FAILURE! - in checks.security.SystemExitCallsCheckTest
[ERROR] detected(checks.security.SystemExitCallsCheckTest) Time elapsed: 0s << ERROR!
java.lang.NoClassDefFoundError:
org/sonar/api/batch/fs/internal/TestInputFileBuilder
at checks.security.SystemExitCallsCheckTest.detected(SystemExitCallsCheckTest.java:19)
看起来像是班级 找不到 TestInputFileBuilder ,但我在Eclipse上没有依赖错误。
这是我的pom.xml的一部分:
<properties>
<sonar.version>6.0</sonar.version>
<java.plugin.version>4.9.0.9858</java.plugin.version>
<sslr.version>1.21</sslr.version>
<gson.version>2.6.2</gson.version>
</properties>
<dependencies>
<dependency>
<groupId>org.sonarsource.sonarqube</groupId>
<artifactId>sonar-plugin-api</artifactId>
<version>${sonar.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.sonarsource.java</groupId>
<artifactId>sonar-java-plugin</artifactId>
<type>sonar-plugin</type>
<version>${java.plugin.version}</version>
<scope>provided</scope>
</dependency>
如何应对此错误?当我尝试单独运行任何单元测试时,我也会遇到同样的错误。
提前致谢!
答案 0 :(得分:1)
您需要将声纳版本升级到API 6.3。这是因为SonarJava插件内部依赖于此API进行测试,因为这个文件:TestInputFileBuilder:https://github.com/SonarSource/sonarqube/blob/master/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/TestInputFileBuilder.java,它是在6.3中引入的。
请注意,虽然您需要依赖此API进行插件测试,但只要您不使用5.6(LTS)中没有的API,就可以在LTS上完美地运行自定义规则。