Peringatan untuk hasil metode bebas efek samping yang tidak digunakan di IntelliJ Idea

Ketika saya tidak menetapkan hasil metode BigDecimal.divide() ke variabel, saya mendapat peringatan bagus dari IntelliJ Idea:

Hasil BigDecimal.divide() diabaikan.

Bisakah saya mendapatkan peringatan yang sama untuk fungsi saya sendiri (bebas efek samping)? Sesuatu seperti menetapkan anotasi Java ke fungsi saya.


person Martin Vseticka    schedule 13.12.2016    source sumber


Jawaban (1)


Ini adalah pemeriksaan "Hasil pemanggilan metode diabaikan". Secara default, ini hanya melaporkan beberapa metode khusus, termasuk semua metode java.lang.BigDecimal. Dalam konfigurasi inspeksi Anda dapat menambahkan kelas dan metode lain yang harus dilaporkan dengan cara ini.

masukkan deskripsi gambar di sini

Kotak centang "Laporkan semua panggilan non-perpustakaan yang diabaikan" memilih semua kelas dalam proyek Anda.

Jika Anda ingin menggunakan anotasi, Anda dapat membuat anotasi metode tunggal atau seluruh kelas dengan JSR 305 anotasi

javax.annotation.CheckReturnValue

Sejak IDEA 2016.3 Anda bahkan dapat menggunakan anotasi rawan kesalahan

com.google.errorprone.annotations.CanIgnoreReturnValue

untuk mengecualikan metode tunggal dari pemeriksaan nilai kembalian. Dengan menggunakan kedua anotasi tersebut, Anda dapat menulis kelas seperti ini:

import javax.annotation.CheckReturnValue;
import com.google.errorprone.annotations.CanIgnoreReturnValue;

@CheckReturnValue
class A {
  String a() { return "a"; }

  @CanIgnoreReturnValue
  String b() { return "b"; }

  void run() {
    a(); // Warning
    b(); // No warning
  }
}
person Ingo Kegel    schedule 13.12.2016
comment
Terima kasih atas jawaban detailnya! Selamat coding di tahun 2017 :-) - person Martin Vseticka; 13.12.2016
comment
Saya mencoba contoh Anda tetapi CanIgnoreReturnValue sepertinya tidak menyembunyikan peringatan di IntelliJ IDEA 2018.2.2. - person Per Mildner; 06.09.2018
comment
@PerMildner: Penting bagi Anda untuk menggunakan CanIgnoreReturnValue dari paket Errorprone. CanIgnoreReturnValues lainnya tidak didukung saat ini. Lihat youtrack.jetbrains.com/issue/IDEA-221360 - person Eduard Wirch; 26.08.2019