2017-08-24 34 views
0

我正在运行Jenkins作业生成良好,直到我在SonarQube中启用了一个自定义规则。该规则由我撰写,在Sonar中进行公司特定的代码惯例检查。 规则启用后,SonarQube扫描仪抱怨ClassNotFound的错误:启用自定义规则后,Jenkins上的SonarQube扫描仪失败

产生的原因:抛出java.lang.ClassNotFoundException:org.sonar.java.checks.JavaFootprint 在org.sonar.classloader.ParentFirstStrategy.loadClass (ParentFirstStrategy.java:39) 在org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:87) 在org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:76) ...... 70多个 18:33:57.764 DEBUG:执行getVersion 18:33:57.765 DEBUG:执行停止

请提供帮助。谢谢。

定制的代码是从这里复制:https://github.com/SonarSource/sonar-custom-rules-examples/tree/master/java-custom-rules 我加入了一些代码来检查Tree.Kind.TRIVIA类似于此: https://github.com/SonarSource/sonar-java/blob/master/java-checks/src/main/java/org/sonar/java/checks/CommentedOutCodeLineCheck.java 的想法是执行一些公司注释约定,例如,如果公司检查许可证声明位于每个文件的开头。

+1

一些关于你实际做的代码可能会有所帮助。 –

+0

我更新了帖子,请检查,谢谢。 –

回答

0

您尝试使用的类org.sonar.java.checks.JavaFootprint不是SonarJava api的一部分(api的类部分在包名中包含api),因此在运行时找不到,从而导致出现错误。

该类不适用于自定义java规则。

+0

我明白了。我将sonar源代码https://github.com/SonarSource/sonar-java/blob/master/java-checks/src/main/java/org/sonar/java/checks/CommentedOutCodeLineCheck.java中的规则复制为它是指JavaFootprint。这个人怎么能指出这个班? –

+0

我通过删除类引用解决了问题。 –

相关问题