2016-03-15 167 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

相關問題