คำเตือนสำหรับผลลัพธ์ที่ไม่ได้ใช้ของวิธีการไร้ผลข้างเคียงใน IntelliJ Idea

เมื่อฉันไม่ได้กำหนดผลลัพธ์ของวิธี BigDecimal.divide() ให้กับตัวแปร ฉันจะได้รับคำเตือนที่ดีจาก IntelliJ Idea:

ผลลัพธ์ของ BigDecimal.divide() จะถูกละเว้น

ฉันจะได้รับคำเตือนแบบเดียวกันสำหรับฟังก์ชั่นของฉันเอง (ไม่มีผลข้างเคียง) ได้หรือไม่? บางอย่างเช่นการกำหนดคำอธิบายประกอบ Java ให้กับฟังก์ชันของฉัน


person Martin Vseticka    schedule 13.12.2016    source แหล่งที่มา


คำตอบ (1)


นี่คือการตรวจสอบ "ผลลัพธ์ของการเรียกเมธอดที่ถูกละเว้น" ตามค่าเริ่มต้น ระบบจะรายงานวิธีพิเศษเพียงสองสามวิธีเท่านั้น รวมถึงวิธีทั้งหมดของ java.lang.BigDecimal ในการกำหนดค่าการตรวจสอบ คุณสามารถเพิ่มคลาสและวิธีการอื่นๆ ที่ควรรายงานด้วยวิธีนี้

ป้อนคำอธิบายรูปภาพที่นี่

ช่องทำเครื่องหมาย "รายงานการโทรที่ไม่ใช่ไลบรารีที่ถูกละเว้นทั้งหมด" จะเลือกคลาสทั้งหมดในโปรเจ็กต์ของคุณ

หากคุณต้องการใช้คำอธิบายประกอบ คุณสามารถใส่คำอธิบายประกอบวิธีการเดียวหรือทั้งคลาสด้วย JSR 305 คำอธิบายประกอบ

javax.annotation.CheckReturnValue

ตั้งแต่ IDEA 2016.3 คุณสามารถใช้คำอธิบายประกอบที่มีแนวโน้มว่าจะเกิดข้อผิดพลาด

com.google.errorprone.annotations.CanIgnoreReturnValue

เพื่อแยกวิธีการเดียวออกจากการตรวจสอบค่าส่งคืน เมื่อใช้คำอธิบายประกอบทั้งสอง คุณสามารถเขียนคลาสได้ดังนี้:

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
ขอบคุณสำหรับคำตอบโดยละเอียด! ขอให้มีความสุขกับการเขียนโค้ดในปี 2560 :-) - person Martin Vseticka; 13.12.2016
comment
ฉันลองตัวอย่างของคุณแล้ว แต่ดูเหมือนว่า CanIgnoreReturnValue จะไม่ระงับคำเตือนใน IntelliJ IDEA 2018.2.2 - person Per Mildner; 06.09.2018
comment
@PerMildner: สิ่งสำคัญคือคุณต้องใช้ CanIgnoreReturnValue จากแพ็คเกจที่มีแนวโน้มผิดพลาด ไม่รองรับ CanIgnoreReturnValues อื่นๆ ในขณะนี้ ดู youtrack.jetbrains.com/issue/IDEA-221360 - person Eduard Wirch; 26.08.2019