Dengan PMD, jika Anda ingin mengabaikan peringatan tertentu, Anda dapat menggunakannya // NOPMD
untuk mengabaikannya.
Apakah ada yang serupa untuk FindBugs?
Dengan PMD, jika Anda ingin mengabaikan peringatan tertentu, Anda dapat menggunakannya // NOPMD
untuk mengabaikannya.
Apakah ada yang serupa untuk FindBugs?
Pendekatan awal FindBugs melibatkan file konfigurasi XML alias filter . Ini benar-benar kurang nyaman daripada solusi PMD tetapi FindBugs bekerja pada bytecode, bukan pada kode sumber, jadi komentar jelas bukan pilihan. Contoh:
<Match>
<Class name="com.mycompany.Foo" />
<Method name="bar" />
<Bug pattern="DLS_DEAD_STORE_OF_CLASS_LITERAL" />
</Match>
Namun, untuk mengatasi masalah ini, FindBugs kemudian memperkenalkan solusi lain berdasarkan anotasi (lihat SuppressFBWarnings
) yang dapat Anda gunakan di kelas atau di tingkat metode (lebih nyaman daripada XML menurut saya). Contoh (mungkin bukan yang terbaik tetapi, well, itu hanya contoh):
@edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
value="HE_EQUALS_USE_HASHCODE",
justification="I know what I'm doing")
Perhatikan bahwa sejak FindBugs 3.0.0 SuppressWarnings
tidak digunakan lagi @SuppressFBWarnings
karena bentrok nama dengan Java 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>
ke POM mereka jika ingin menggunakannya@SuppressFBWarnings
.Seperti yang disebutkan orang lain, Anda dapat menggunakan
@SuppressFBWarnings
Anotasi. Jika Anda tidak ingin atau tidak dapat menambahkan Ketergantungan lain ke kode Anda, Anda dapat menambahkan Anotasi ke Kode Anda sendiri, Findbugs tidak peduli di mana Paket Anotasi itu berada.Sumber: https://sourceforge.net/p/findbugs/feature-requests/298/#5e88
sumber
Berikut adalah contoh filter XML yang lebih lengkap (contoh di atas dengan sendirinya tidak akan berfungsi karena hanya memperlihatkan cuplikan dan tidak ada
<FindBugsFilter>
tag awal dan akhir):Jika Anda menggunakan plugin Android Studio FindBugs, telusuri file filter XML Anda menggunakan File-> Pengaturan Lainnya-> Pengaturan Default-> Pengaturan Lainnya-> FindBugs-IDEA-> Filter-> Kecualikan file filter-> Tambah.
sumber
Perbarui Gradle
Temukan Laporan FindBugs
Temukan pesan spesifik
Impor versi anotasi yang benar
Tambahkan anotasi langsung di atas kode yang menyinggung
Lihat di sini untuk info lebih lanjut: Annotation Spring Annotation
sumber
compile 'net.sourceforge.findbugs:annotations:1.3.2'
sintaks yang lebih pendek.testCompile 'com.google.code.findbugs:annotations:3.0.0'
dan nama anotasi@SuppressFBWarnings
Pada saat penulisan ini (Mei 2018), FindBugs tampaknya telah digantikan oleh SpotBugs . Menggunakan
SuppressFBWarnings
anotasi membutuhkan kode Anda untuk dikompilasi dengan Java 8 atau lebih baru dan memperkenalkan ketergantungan waktu kompilasispotbugs-annotations.jar
.Menggunakan file filter untuk memfilter aturan SpotBugs tidak memiliki masalah seperti itu. Dokumentasinya ada di sini .
sumber
Sementara jawaban lain di sini valid, mereka bukan resep lengkap untuk menyelesaikan ini.
Dalam semangat kelengkapan:
Anda harus memiliki anotasi findbugs dalam file pom Anda - mereka hanya mengkompilasi waktu, sehingga Anda dapat menggunakan
provided
cakupan:Ini memungkinkan penggunaan
@SuppressFBWarnings
ada ketergantungan lain yang menyediakan@SuppressWarnings
. Namun, hal di atas lebih jelas.Kemudian Anda menambahkan anotasi di atas metode Anda:
Misalnya
Ini termasuk nama bug dan juga alasan mengapa Anda menonaktifkan pemindaian untuk itu.
sumber
Saya akan meninggalkan yang ini di sini: https://stackoverflow.com/a/14509697/1356953
Harap dicatat bahwa ini berfungsi dengan baik
java.lang.SuppressWarnings
sehingga tidak perlu menggunakan anotasi terpisah.sumber
java.lang.SuppressWarnings
tidak bisa bekerja Ini memiliki retensi sumber, sehingga tidak terlihat oleh bug.