因此,我有一个声纳java自定义规则插件,运行在4.2.1.6971版本和5.6.3的SonarQube平台上。
最近,我尝试将java插件依赖项更新为最新的4.9.0.9858版本,在尝试“清除安装”项目之后,在所有单元测试中都会出现相同的错误:
[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>我该怎么做才能克服这个错误呢?当我尝试单独运行任何单元测试时,我也会得到相同的错误。
提前感谢!
发布于 2017-05-16 19:10:08
您需要将声纳版本升级到API 6.3。这是因为在内部,SonarJava插件依赖于这个API进行测试,因为这个文件是在6.3中引入的: TestInputFileBuilder:https://github.com/SonarSource/sonarqube/blob/master/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/TestInputFileBuilder.java。
请注意,虽然插件测试需要依赖此API,但只要不使用5.6 ( LTS )中不可用的API,您就可以在LTS上完美地运行自定义规则。
https://stackoverflow.com/questions/44008135
复制相似问题