我已经尝试了几个星期让sonarqube使用自定义插件并且遇到了多个死胡同。我正在使用this example。如果我理解正确,我应该做的就是在目录上mvn clean package
,然后将生成的jar复制到/ etc / sonarqube / extensions / plugins /中。当我这样做时,sonarqube服务器识别新规则(包括下面的快照)。
似乎声纳扫描器也能识别插件,因为每当我将jar移动到插件目录后第一次运行扫描器时,我都会看到以下输出。您会注意到最后一行有扫描仪"正在下载"自定义规则jar。
INFO: Scanner configuration file: /usr/local/Cellar/sonar-scanner/3.0.3.778/libexec/conf/sonar-scanner.properties
INFO: Project root configuration file: NONE
INFO: SonarQube Scanner 3.0.3.778
INFO: Java 1.8.0_144 Oracle Corporation (64-bit)
INFO: Mac OS X 10.12.6 x86_64
INFO: User cache: /Users/jareddembrun/.sonar/cache
INFO: Load global settings
INFO: Load global settings (done) | time=104ms
INFO: User cache: /Users/jareddembrun/.sonar/cache
INFO: Load plugins index
INFO: Load plugins index (done) | time=10ms
INFO: Download java-custom-rules-1.0-SNAPSHOT.jar
我在一个java文件上运行它。由于其中一个规则(一个名为MyCustomSubscriptionRule)似乎正在检查没有方法只接受一个参数并返回与该参数相同类型的东西,我在我的java文件中执行此操作:
public class HelloWorld
{
public static void main(String args[])
{
String x = echo("Hello World");
System.out.println(x);
}
private static String echo(String in)
{
return in;
}
}
当我运行扫描时,它实际上会分析文件,并返回另外三个"代码气味,"我可以在webapp中看到:
但是,正如您所看到的,这些都不是自定义规则。我在这里缺少一些步骤吗?我不明白自定义规则在做什么?我已经用尽了很多不同的路线,包括javascript和java checkers。所有人似乎都死路一条。非常感谢您对此的任何帮助。
答案 0 :(得分:0)
必须将规则添加到质量配置文件中。转到sonarqube webapp上的质量配置文件。登录右上角(user = admin,pass = admin,默认情况下),点击"创建"在右上方并制作新的个人资料。
创建新配置文件后,您可以将其作为子项添加到您所关注语言的默认配置文件中。然后,还将它添加到项目中(您只需将其添加到项目中即可使其工作)。转到您关注的规则并在新配置文件中激活它。重新运行扫描,您应该看到该规则已按预期引发了问题。