我正在尝试将规则(对于Java和其他语言)从.xml文件导入SonarQube。我使用了一个例子插件来做到这一点。该示例是从https://github.com/SonarSource/sonar-examples - project sonar-reference-plugin 下载的。 质量配置文件确实已创建,但未显示任何规则。 (screen image SonarQube profile page)
这是Override方法,它应该通过使用 RulesDefinitionXmlLoader类来加载规则:
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,但我尝试了不同版本的尝试失败了。 提前谢谢。
答案 0 :(得分:0)
原因是“质量配置文件”(QP)下未显示规则的原因是因为在导入之后,它们仍未与任何必须完成的QP相关联。 因此导入过程现在正常运行。一些建议:
包含规则的.xml文件的必需标记是(不正确的文件结构可能导致SonarQube在启动期间失败):
<rules>
<rule>
<key> </key>
<name> </name>
<description> </description>
</rule>
</rules>
同样在我的情况下,包含规则的.xml文件的路径也引起了一些问题。正确的是(位于 src \ main \ resources 下):
InputStream rulesXml = this.getClass().getResourceAsStream("/rules-TESTE.xml");
可在此处找到更详细的说明:https://stackoverflow.com/a/36375145/5560215