== Why is this an issue? In Kotlin, nullability is a part of the type system. This means that all types could be used in 2 ways. `T` - as non-nullable and `T?` as nullable. When you want to access properties or instance methods of a nullable type, you need to handle the potential null value. However, while accessing a non-nullable type, you don't need to test nullability as the compiler knows that the value can never be `null`. So all the nullability checks on the non-nullable types are considered code smells. Here is an example of non-nullable variable. `s` is of a type `String` and cannot be `null`. [source, kotlin] ---- val s: String = "" ---- Here is an example of nullable variable. Nullable variables are declared by using the `?`. [source, kotlin] ---- val s: String? = null ---- == How to fix it Avoid using null checks on non-nullable variables. === Code examples If your variable type is non-nullable, any null checks are redundant. For example, `if (s == null) {}`, `requireNotNull(s)` and `checkNotNull(s)` can be dropped from your code. ==== Noncompliant code example [source, kotlin,diff-id=1,diff-type=noncompliant] ---- val s: String = "" if (s != null) { doSomething() } // This statement is always true ---- ==== Compliant solution [source, kotlin,diff-id=1,diff-type=compliant] ---- val s: String = "" doSomething() ---- ==== Noncompliant code example [source, kotlin,diff-id=2,diff-type=noncompliant] ---- val s: String = "" if (s == null) { doSomething() } // This statement is always false. ---- ==== Compliant solution [source, kotlin,diff-id=2,diff-type=compliant] ---- val s: String = "" ---- ==== Noncompliant code example [source, kotlin,diff-id=3,diff-type=noncompliant] ---- val s: String = "ABC" return s ?: "" // This ?: is useless. ---- ==== Compliant solution [source, kotlin,diff-id=3,diff-type=compliant] ---- val s: String = "ABC" return s ---- ==== Noncompliant code example [source, kotlin,diff-id=4,diff-type=noncompliant] ---- val s: String = "" s!!.doSomething() //You do not need to assert that S is non-null. ---- ==== Compliant solution [source, kotlin,diff-id=4,diff-type=compliant] ---- val s: String = "" s.doSomething ---- == Resources === Documentation * https://kotlinlang.org/docs/null-safety.html#nullable-types-and-non-null-types[Kotlin Documentation - Null Safety] * https://kotlinlang.org/docs/strings.html[Kotlin Documentation - Strings] === Articles & blog posts * https://blog.logrocket.com/complete-guide-null-safety-kotlin/[A complete guide to null safety in Kotlin]