【发布时间】:2016-06-30 22:13:42
【问题描述】:
我正在尝试将 .xml 文件中的规则(适用于 Java 和其他语言)导入 SonarQube。我使用了一个示例插件来做到这一点。该示例是从 https://github.com/SonarSource/sonar-examples - 项目 sonar-reference-plugin 下载的。 确实创建了质量配置文件,但没有显示任何规则。 (screen image SonarQube profile page)
这是通过使用 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,但我尝试了不同的版本均未成功。 提前致谢。
【问题讨论】:
-
验证:规则来自的插件是否已加载并在您的 SQ 实例中运行? IE。您可以通过界面手动创建此配置文件吗?另外,这些规则是否来自规则模板?
-
我不确定我是否理解这个问题,但我已经通过 Java 中的“规则爬虫”组件从数据库创建了规则文件。所以我有一个小型 Java 程序,它正在访问数据库、提取规则并编写 .xml 文件。我正在按照我在网上看到的似乎正确的模板(我在上面发布的示例)。另外,我想说我可以手动创建配置文件,因为它不包含任何规则; SonarQube 面板中显示的只是通用语言名称的空配置文件(仅用于测试目的)。
标签: xml sonarqube rules sonarqube-web