我正在尝试将 .xml 文件中的规则(适用于 Java 和其他语言)导入 SonarQube。我使用了一个示例插件来做到这一点。该示例是从https://github.com/SonarSource/sonar-examples - project sonar-reference-plugin下载的。确实创建了质量配置文件,但没有显示任何规则。 (屏幕图像 SonarQube 个人资料页面)
这是通过使用RulesDefinitionXmlLoader 类加载规则的 Override 方法:
private void defineRulesForLanguage(Context context, String repositoryKey, String repositoryName, String languageKey) {
NewRepository repository = context.createRepository(repositoryKey, languageKey).setName(repositoryName);
InputStream rulesXml = this.getClass().getResourceAsStream("/resources/rules-TESTE.xml");
if (rulesXml != null) {
RulesDefinitionXmlLoader rulesLoader = new RulesDefinitionXmlLoader();
rulesLoader.load(repository, rulesXml, StandardCharsets.UTF_8.name());
}
repository.done();
}
@Override
public void define(Context context) {
String repositoryKey = FooLintRulesDefinition.getRepositoryKeyForLanguage(FooLanguage.KEY);
String repositoryName = FooLintRulesDefinition.getRepositoryNameForLanguage(FooLanguage.KEY);
defineRulesForLanguage(context, repositoryKey, repositoryName, FooLanguage.KEY);
}
我已经尝试了包含规则的 .xml 文件的不同路径,以智取任何可能的问题。该 .xml 文件现在看起来像这样(现在也非常简单,只有一条规则可以使其更易于应用):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rules>
<rule>
<key>da-rule-key</key>
<name>Nome da regra</name>
</rule>
</rules>
我正在使用本地 SonarQube 5.3,但我尝试了不同的版本都没有成功。提前致谢。