在sonar 服务页面的administer->configuration页面展示每一种语言插件的信息:

上图对应的是自写的语言(configfiles)ConfigFiles插件
上面的信息展示是通过plugin 扩展类中addExtensions(ConfigFilesLanguageProperties.getProperties()) 加载
public class ConfigFileScanPlugin implements Plugin {
public static final String CHECK_SECURITY = "security";
public static final String CHECK_BUG = "bug";
public static final String REPOSITORY_KEY = "configfilerepo";
public static final String REPOSITORY_NAME = "configFilePluginRepo";
public static final String LANGUAGE_KEY = "java";
public static final String LANGUAGE_NAME = "JProperties";
public static final String FILE_SUFFIXES_DEFAULT_VALUE = ".properties,.ini,.conf";
public static final String FILE_SUFFIXES_KEY = "sonar.java.file.suffixes";
@Override
public void define(Context context) {
System.out.println("load ConfigFileScanPlugin.");
context.addExtensions(ConfigFileScanLanguage.class,
ConfigFileScanProfileDefinition.class)
.addExtension(ConfigFileScanSensor.class)
.addExtension(ConfigFileScanRulesDefinition.class)
.addExtensions(ConfigFilesLanguageProperties.getProperties());
}
}
ConfigFilesLanguageProperties代码:
import java.util.List;
import org.sonar.api.config.PropertyDefinition;
import org.sonar.api.resources.Qualifiers;
import com.lingtian.sonar.plugin.ConfigFileScanPlugin;
public class ConfigFilesLanguageProperties {
private ConfigFilesLanguageProperties() {
// only statics
}
public static List<PropertyDefinition> getProperties() {
return asList(PropertyDefinition.builder(ConfigFileScanPlugin.LANGUAGE_KEY)
.defaultValue(ConfigFileScanPlugin.FILE_SUFFIXES_DEFAULT_VALUE)
.category("ConfigFiles")
.name("scan configFiles userMsg")
.description("configFiles without contain userMsg.")
.onQualifiers(Qualifiers.PROJECT)
.build());
}
}
本文介绍如何为SonarQube开发自定义语言插件,以ConfigFiles插件为例,详细展示了插件的实现方式,包括关键类ConfigFileScanPlugin的定义、配置属性设置及如何在Sonar服务中展示语言插件信息。
1173

被折叠的 条评论
为什么被折叠?



