我正在为 SonarQube 开发一个插件,它将运行一个自定义的后期分析任务,但前提是为 sonar-scanner 命令提供了一个命名的扫描仪参数。我可以做这样的事情吗?
public class MyPlugin implements Plugin {
@Override
public void define(Context context) {
context.addExtension(MyPostAnalysisTask.class);
}
}
public class MyPostAnalysisTask implements PostProjectAnalysisTask, Sensor {
private String param = "";
@Override
public void describe(SensorDescriptor descriptor) {
descriptor.name(getClass().getName());
}
@Override
public void execute(SensorContext context) {
// Get command line param.
Optional<String> param = context.config().get('my.param.name');
if (param.isPresent()) {
this.param = param.get();
}
}
@Override
public void finished(final ProjectAnalysis analysis) {
if (!this.param.isEmpty()) {
// Perform custom post analysis task.
}
}
}
我不熟悉插件对象的范围/生命周期。它们是每次扫描或每个 SonarQube 服务器实例唯一的吗?