항상 true, false, null 또는 0으로 정적으로 알려진, 자명하지 않은 조건 및 값을 보고합니다. 의도한 경우도 있지만, 이는 종종 프로그램에 논리적 오류가 있다는 것을 나타냅니다. 또한, when 브랜치에 연결할 수 없으며 항상 실패하는 것으로 정적으로 알려진 일부 표현식을 보고합니다.

예:


fun process(x: Int?) {
  val isNull = x == null
  if (!isNull) {
    if (x != null) {} // 조건이 항상 true입니다
    require(x!! < 0 && x > 10) // 조건이 항상 false입니다
  } else {
    println(x!!) // !! operator will always fail
  }
}
fun process(v: Any) {
  when(v) {
    is CharSequence -> println(v as Int) // 형 변환이 항상 실패합니다
    is String -> println(v) // 브랜치에 도달할 수 없습니다
  }
}

조건에 없는 상숫값을 가진 변수를 보고하지 않으려면 '상수가 변수에 저장되면 경고' 옵션을 선택 취소합니다.

2021.3의 새로운 기능