Ist es möglich, Sonarmessungen ( www.sonarsource.org ) für bestimmte Codeblöcke zu deaktivieren , die nicht gemessen werden sollen?
Ein Beispiel ist die Warnung "Preserve Stack Trace", die Findbugs ausgibt. Wenn ich den Server verlasse, möchte ich die Nachricht möglicherweise nur an den Client zurückgeben, ohne die tatsächliche Ausnahme, die ich gerade abgefangen habe, wenn diese Ausnahme dem Client unbekannt ist (weil der Client nicht über die JAR verfügt, in der sich diese befindet Ausnahme war zum Beispiel enthalten).
@SuppressFBWarnings
(hinzugefügt, um Konflikte zu vermeidenjava.lang.SuppressWarnings
) und ignoriert es auch.Sie können eine Klasse oder eine Methode mit SuppressWarnings mit Anmerkungen versehen
Tintenfisch: S00112 ist in diesem Fall eine Sonar-ID. Sie finden diese ID in der Sonar-Benutzeroberfläche. Gehen Sie zu Issues Drilldown. Suchen Sie ein Problem, bei dem Sie Warnungen unterdrücken möchten. Im roten Problemfeld in Ihrem Code befindet sich ein Regellink mit einer Definition eines bestimmten Problems. Sobald Sie darauf klicken, wird die ID oben auf der Seite angezeigt.
quelle
@SuppressWarnings("findbugs:UI_INHERITANCE_UNSAFE_GETRESOURCE")
.Unsupported @SuppressWarnings("squid:S00112")
. Sie können Eclipse so konfigurieren, dass dies ignoriert wird. Ein Tippfehler wie in@SuppressWarnings("uncheckedd")
wird jedoch nicht erkannt.Ich empfehle Ihnen, bestimmte Warnungen mithilfe von zu unterdrücken
@SuppressWarnings("squid:S2078")
.Um mehrere Warnungen zu unterdrücken, können Sie dies folgendermaßen tun
@SuppressWarnings({"squid:S2078", "squid:S2076"})
Es gibt auch den
//NOSONAR
Kommentar, der SonarQube anweist, alle Fehler für eine bestimmte Zeile zu ignorieren.Wenn Sie die richtigen Rechte für die Benutzeroberfläche haben, können Sie direkt von der Benutzeroberfläche aus ein Flag als falsch positiv ausgeben.
Der Grund, warum ich die Unterdrückung bestimmter Warnungen empfehle, ist, dass es besser ist, ein bestimmtes Problem zu blockieren, anstatt
//NOSONAR
ein Sonar-Problem zu verwenden und zu riskieren, das sich versehentlich in Ihrem Code einschleicht.Weitere Informationen hierzu finden Sie in den FAQ
Hinweis: Gábor Bakos verweist auf die älteren FAQ, die jetzt 404s sind. Dies ist das erste Google-Ergebnis für mich, daher möchte ich allen anderen helfen, die möglicherweise die gleiche Frage haben
Bearbeiten: 30.06.16 SonarQube heißt jetzt SonarLint
Falls Sie sich fragen, wie Sie die Tintenfischnummer finden können. Klicken Sie einfach auf die Sonar-Nachricht (z. B.
Remove this method to simply inherit it.
) und das Sonar-Problem wird erweitert.Unten links wird die Tintenfischnummer angezeigt (z.
squid:S1185
B. Wartbarkeit> Verständlichkeit).Dann können Sie es unterdrücken, indem Sie
@SuppressWarnings("squid:S1185")
quelle
Verwenden Sie // NOSONAR in der Zeile, in der Sie eine Warnung erhalten, wenn Sie Ihrem Code nicht helfen können. Es klappt!
quelle
Ich kann die Tintenfischnummer in Sonar 5.6 nicht finden, mit dieser Anmerkung funktioniert auch:
quelle
squid
ist für die Sonar-bezogene Java-Datenbank (SonarAnalyzer Java).pmd
undcheckstyle
befinden sich in anderen Regel-Repositorys.