2015-04-13 2 views
12

TL; DR: Grundsätzlich, was ich suche, ist eine Möglichkeit, eine Liste aller Sonar-Regeln zu erhalten, die 0 Probleme ausgelöst haben. Ich könnte dann alle zu Blockern bewegen und mich davor schützen, dass jemand dieses Problem in Zukunft hinzufügt.Regeln mit 0 Instanzen im Sonar finden?

Meine Firma verwendet Sonar und statische Analyse, um Refactoring und Entwicklung einer beträchtlichen Legacy-Codebasis (~ 750K LOC) zu führen. Wir hatten viel Erfolg, indem wir den Schweregrad der meisten Regeln senkten und dann einen kleineren Satz von Regeln auswählten, um Blockierer oder kritische Elemente zu fördern, da wir echte Probleme im Code finden. Dadurch konnten wir die Anzahl der Probleme, mit denen wir uns befassen, gleichzeitig überschaubar halten, so dass wir uns tatsächlich fühlen können, als würden wir Fortschritte machen und nicht im Lärm der Altlasten ertrinken.

Insbesondere wenn wir von einem Feld- oder QA-Problem gebissen wurden, das Sonar entdeckt haben könnte, wenden wir dieses Problem an einen BLOCKER an und reparieren jede Instanz von in. Diese Blocker brechen den Build und wir sind jetzt sicher, dass wir es nicht tun fügen Sie eine neue Instanz desselben Problems erneut hinzu. Dies hat gut funktioniert und hat einige der Bugs verhindert.

Das große Problem mit dieser Methode ist, dass wir ein Beispiel für jede dieser Klassen Fehler mindestens einmal in der Codebasis haben, müssen wir konnten so erfahren, dass es wichtig war, und soll einen Blocker gemacht werden. Alle Probleme, die wir noch nicht kennen, werden immer noch auf ihrem Standardniveau sein. Ich möchte sie jetzt alle zu BLOCKER bewegen, so dass wir den Tag bemerken, an dem sie hinzugefügt werden.

Edit: Derzeit verwenden wir 3.7.3, aber wir sind im Begriff, auf 5.X zu aktualisieren.

+0

Welche Version von SonarQube verwenden Sie? – benzonico

Antwort

5

Es gibt zwei Möglichkeiten, dies zu tun:

1- Der schwierige Weg ist, die Sonarqube Datenbank abzufragen. Sie müssen die Tabellen verstehen und eine SQL-Abfrage basierend darauf schreiben, welche DB für Ihren SonarQube verwendet wird. Sie können eine Referenz finden here - ODER here

2- Ich habe noch nie Ihre Methode versucht, aber es sollte funktionieren. Sie können die Sonar-Webservice-API verwenden. Sie haben auch einen Web Service Java Client. Referenz: link1, link2, link3

Verwandte Themen