我試圖從.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