2016-03-15 163 views
0

我试图从.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,但我没有成功尝试了不同的版本。 在此先感谢。

+0

要验证:是插件的规则是从装并运行在你的SQ实例? I.E.你可以通过界面手动创建这个配置文件吗?另外,规则模板中是否有这些规则? –

+0

我不确定我是否理解这个问题,但是我已经通过Java中的“规则搜寻器”组件创建了数据库中的规则文件。所以我有一个小型Java程序访问数据库,提取规则并编写.xml文件。我正在关注我在网上看到的模板(我在上面发布的示例)。另外,我会说我现在可以手动创建配置文件,因为它不包含任何规则; SonarQube面板中显示的仅仅是一个通用语言名称的空白配置文件(仅用于测试目的)。 – jonypera

回答

0

原因是在“质量配置文件”(QP)下未显示规则的原因是因为在导入之后,它们仍未与任何QP关联,必须完成此操作。 因此,导入过程现在正常工作。有几个忠告:

  • 包含规则是.xml文件强制性标签(不正确的文件结构可能会导致SonarQube启动过程中失败):

    <rules> 
        <rule> 
         <key> </key> 
         <name> </name> 
         <description> </description>  
        </rule> 
    </rules> 
    
  • 而且在我的情况包含规则的.xml文件的路径也会导致一些问题。正确的是(由位于下的src \主\资源):

    InputStream rulesXml = this.getClass().getResourceAsStream("/rules-TESTE.xml"); 
    

更详细的解释可以在这里找到:https://stackoverflow.com/a/36375145/5560215

相关问题