0

.xml ファイルから SonarQube にルール (Java およびその他の言語用) をインポートしようとしています。そのためにサンプルプラグインを使用しました。そのサンプルはhttps://github.com/SonarSource/sonar-examples - project sonar-reference-pluginからダウンロードされました。品質プロファイルは実際に作成されますが、ルールは表示されません。 (画面イメージ SonarQube プロフィールページ)

これは、 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 ファイルは現在、次のようになっています (また、非常にシンプルになり、適用しやすくするためのルールが 1 つしかありません)。

<?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 を使用していますが、別のバージョンを試してもうまくいきませんでした。前もって感謝します。

4

1 に答える 1

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

于 2016-03-16T12:09:24.787 に答える