2015-08-18 13 views
5

Abbiamo creato un plug-in personalizzato per FindBugs (per chiarezza: questo è un plugin findbugs, non un plug-in sonar) e vogliamo estendere il plug-in sonar di FindBugs con i nostri findbugs personalizzati- collegare.Estensione di SonarQube FindBugs plug-in con plug FindBugs personalizzato

Attualmente utilizziamo SonarQube 5.1 con il plug-in sonar di FindBugs 3.2.

Poiché il nostro plugin findbugs personalizzato è un plugin valido per FindBugs, abbiamo pensato che il modo più semplice per attivarlo è utilizzare il sistema di plugin dell'istanza di FindBugs dal nostro plug-in sonar esistente ma non siamo riusciti a trovare come attivare il nostro plugin findbugs in questo modo.

Abbiamo anche provato a creare un file rules.xml e posto il nostro jar in sonar_home/extensions/rules/findbugs come descritto in https://jira.sonarsource.com/browse/SONAR-1481 ma questo non sembra funzionare con la versione del plug-in del sonar di FindBug che stiamo usando.

Qual è il modo corretto di configurare la nostra versione di SonarQube per prelevare il nostro plug-in personalizzato FindBugs? Quali passi dobbiamo fare?

+1

Perché non dare un'occhiata a come implementare i controlli con le regole personalizzate di SonarQube per java? http://docs.sonarqube.org/display/DEV/Custom+Rules+for+Java – benzonico

+1

Questa sarebbe un'opzione, tuttavia sembra che dovremo re-implementare tutti i nostri controlli di FindBug usando l'API Sonar, senza riutilizzare? –

+0

Sfortunatamente, hai ragione, ma tendo a pensare che il tuo codice finirà molto più chiaramente. – benzonico

risposta

3

Le scelte sono sborsare il SonarQube FindBugs plugin e aggiungendo le regole a fianco delle regole Bugs trovare sicurezza (vedi this commit), o la creazione di un nuovo plugin simile a how Find Security Bugs was handled prima che fosse rotolato nel plugin FindBugs.

In entrambi i casi, dovrai elencare il tuo jar come dipendenza nel pom.xml, fornire il rules.xml che hai già creato e aggiungere un repository definition.

Se si va il percorso stand-alone, che è probabilmente meglio, è necessario

  1. attesa per una correzione di bug in 5.2
  2. utilizzare il tasto repository FindBugs. Vedere il lato "prima" di this commit.
  3. forniscono la necessaria basic plugin plumbing

EDIT: A cura di aggiungere collegamenti commettere & espandono sui requisiti per la possibilità stand-alone.

+0

Ciao G. Ann, grazie per la rapida risposta. Ho deciso di creare un nuovo plug-in, seguendo l'idea suggerita di https://github.com/porscheinformatik/sonar-find-sec-bugs-plugin. Ancora mi sembra di imbattersi in un problema per ottenere il plugin findbugs utilizzare le nostre definizioni findbugs. Durante l'esecuzione del Sonar viene creato un findbugs-include.xml da Sonar, ma quel file non include le nostre definizioni dei bug di findbugs. Sembra che le nostre definizioni di bug siano escluse da https://github.com/SonarSource/sonar-findbugs/blob/master/src/main/java/org/sonar/plugins/findbugs/FindbugsProfileExporter.java#L59 –

+0

Hmmm ... Sembra che dovrai cooptare la chiave del repository FindBugs invece di dichiararla tua. Questo commit mostra quando fb-contrib è stato separato. In precedenza, sembra che le regole fossero tutte raggruppate insieme: https://github.com/SonarSource/sonar-findbugs/commit/f61fc9392d35f11f5218d2941b07b4fe79d1726a –

+0

Sì, l'ho provato, ma poi ho trovato questo errore: https: // github .com/SonarSource/sonarqube/blob/501289ca85e1c8dd21d5e0ba5f457b40ee62f5ef/sonar-plugin-api/src/main/java/org/sonar/api/server/rule/RulesDefinition.java # L399 che sembra essere risolto in un commit successivo (!), non sono sicuro di quale versione di Sonar sarà disponibile e quali sono le conseguenze. –

Problemi correlati