Wenn Sie mit PMD eine bestimmte Warnung ignorieren möchten, können Sie // NOPMD
diese Zeile ignorieren lassen.
Gibt es etwas Ähnliches für FindBugs?
quelle
Wenn Sie mit PMD eine bestimmte Warnung ignorieren möchten, können Sie // NOPMD
diese Zeile ignorieren lassen.
Gibt es etwas Ähnliches für FindBugs?
Der anfängliche Ansatz von FindBugs umfasst XML-Konfigurationsdateien, auch Filter genannt . Dies ist wirklich weniger praktisch als die PMD-Lösung, aber FindBugs arbeitet mit Bytecode, nicht mit dem Quellcode, sodass Kommentare offensichtlich keine Option sind. Beispiel:
<Match>
<Class name="com.mycompany.Foo" />
<Method name="bar" />
<Bug pattern="DLS_DEAD_STORE_OF_CLASS_LITERAL" />
</Match>
Um dieses Problem zu lösen, führte FindBugs später eine andere Lösung ein, die auf Anmerkungen basiert (siehe SuppressFBWarnings
), die Sie auf Klassen- oder Methodenebene verwenden können (meiner Meinung nach bequemer als XML). Beispiel (vielleicht nicht das beste, aber es ist nur ein Beispiel):
@edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
value="HE_EQUALS_USE_HASHCODE",
justification="I know what I'm doing")
Beachten Sie, dass FindBugs 3.0.0 aufgrund des Namenskonflikts mit Java SuppressWarnings
zugunsten von veraltet @SuppressFBWarnings
ist SuppressWarnings
.
<dependency> <groupId>net.sourceforge.findbugs</groupId> <artifactId>annotations</artifactId> <version>1.3.2</version> <scope>provided</scope> </dependency>
<dependency><groupId>com.google.code.findbugs</groupId><artifactId>annotations</artifactId><version>3.0.0</version><scope>provided</scope></dependency>
ihren POM erweitern, wenn sie ihn verwenden möchten@SuppressFBWarnings
.Wie bereits erwähnt, können Sie die
@SuppressFBWarnings
Anmerkung verwenden. Wenn Sie Ihrem Code keine weitere Abhängigkeit hinzufügen möchten oder können, können Sie die Anmerkung selbst zu Ihrem Code hinzufügen. Findbugs ist es egal, in welchem Paket sich die Anmerkung befindet.Quelle: https://sourceforge.net/p/findbugs/feature-requests/298/#5e88
quelle
Hier ist ein vollständigeres Beispiel für einen XML-Filter (das obige Beispiel allein funktioniert nicht, da nur ein Snippet angezeigt wird und die
<FindBugsFilter>
Start- und End-Tags fehlen ):Wenn Sie das Android Studio FindBugs-Plugin verwenden, navigieren Sie zu Ihrer XML-Filterdatei über Datei-> Andere Einstellungen-> Standardeinstellungen-> Andere Einstellungen-> FindBugs-IDEA-> Filter-> Filterdateien ausschließen-> Hinzufügen.
quelle
Gradle aktualisieren
Suchen Sie den FindBugs-Bericht
Suchen Sie die spezifische Nachricht
Importieren Sie die richtige Version der Anmerkung
Fügen Sie die Anmerkung direkt über dem fehlerhaften Code hinzu
Weitere Informationen finden Sie hier: findbugs Spring Annotation
quelle
compile 'net.sourceforge.findbugs:annotations:1.3.2'
stattdessen eine kürzere Syntax verwenden.testCompile 'com.google.code.findbugs:annotations:3.0.0'
und Annotation Name@SuppressFBWarnings
Zum Zeitpunkt des Schreibens (Mai 2018) scheint FindBugs durch SpotBugs ersetzt worden zu sein . Für die Verwendung der
SuppressFBWarnings
Annotation muss Ihr Code mit Java 8 oder höher kompiliert werden, und es wird eine Abhängigkeit von der Kompilierungszeit eingeführtspotbugs-annotations.jar
.Die Verwendung einer Filterdatei zum Filtern von SpotBugs-Regeln weist keine derartigen Probleme auf. Die Dokumentation finden Sie hier .
quelle
Während andere Antworten hier gültig sind, sind sie kein vollständiges Rezept, um dies zu lösen.
Im Sinne der Vollständigkeit:
Sie müssen die Findbugs-Annotationen in Ihrer POM-Datei haben - sie haben nur Kompilierungszeit, damit Sie den folgenden
provided
Bereich verwenden können:Dies ermöglicht die Verwendung einer
@SuppressFBWarnings
anderen Abhängigkeit, die bereitstellt@SuppressWarnings
. Das Obige ist jedoch klarer.Dann fügen Sie die Anmerkung über Ihrer Methode hinzu:
Z.B
Dies beinhaltet sowohl den Namen des Fehlers als auch einen Grund, warum Sie den Scan dafür deaktivieren.
quelle
Ich werde dieses hier lassen: https://stackoverflow.com/a/14509697/1356953
Bitte beachten Sie, dass dies funktioniert,
java.lang.SuppressWarnings
sodass keine separate Anmerkung erforderlich ist.quelle
java.lang.SuppressWarnings
kann nicht arbeiten. Es hat eine Quellenaufbewahrung und ist daher für Findbugs nicht sichtbar.