【发布时间】:2018-03-13 21:34:28
【问题描述】:
几周以来,我一直在尝试让 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;
}
}
当我运行扫描时,它实际上会分析文件,并返回三个其他“代码气味”,我可以在 web 应用程序中看到它们:
但是,如您所见,这些都不是自定义规则。我在这里缺少一些步骤吗?我不明白自定义规则在做什么吗?对于 javascript 和 java 检查器,我已经用尽了很多不同的路线。一切似乎都是死胡同。非常感谢您对此提供任何帮助。
【问题讨论】:
-
您是否将自定义规则添加到用于分析您的项目的quality profile?
-
我没有。我不明白这个文档。我要添加什么以及添加到哪些文件?我尝试进行批量更改,但我无法使用它,因为该字段出现“未找到匹配项”,即使我开始输入 Java 也是如此。如果我尝试将它应用于“Java”,它会告诉我“targetProfile”参数丢失。如何找到给定配置文件的 targetProfile 参数?