我试图从.xml文件导入规则(对于Java和其他语言)到SonarQube。我使用了一个例外插件来做到这一点。该样本从https://github.com/SonarSource/sonar-examples下载 - 项目sonar-reference-plugin。 质量配置文件确实已创建,但不显示任何规则。 (screen image SonarQube profile page)SonarQube在质量配置文件中不显示导入的规则
这是覆盖方法,其中,它理应将加载规则,通过使用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,但我没有成功尝试了不同的版本。 在此先感谢。
要验证:是插件的规则是从装并运行在你的SQ实例? I.E.你可以通过界面手动创建这个配置文件吗?另外,规则模板中是否有这些规则? –
我不确定我是否理解这个问题,但是我已经通过Java中的“规则搜寻器”组件创建了数据库中的规则文件。所以我有一个小型Java程序访问数据库,提取规则并编写.xml文件。我正在关注我在网上看到的模板(我在上面发布的示例)。另外,我会说我现在可以手动创建配置文件,因为它不包含任何规则; SonarQube面板中显示的仅仅是一个通用语言名称的空白配置文件(仅用于测试目的)。 – jonypera