Why is this an issue?

The expression can be simplified using one of the functions isEmpty, isNotEmpty or isNullOrEmpty.

What is the potential impact?

Readability and Understanding

This change makes the code more concise and easier to understand. The additional comparison operator would increase the complexity of the expression while not offering any benefit. The function names isEmpty, isNotEmpty and isNullOrEmpty are descriptive on the other hand, so it is evident to readers what the purpose of the expression is.

How to fix it

Replace

Code examples

Noncompliant code example

val list = listOf(5,2,9,6,8,2,5,7,3)
val hasElemenents = !list.isEmpty() // Noncompliant, use isNotEmpty()
val hasNoElemenents = list.count() == 0 // Noncomplient, use isEmpty()

fun isNullOrEmpty(list: List<Int>?): Boolean = list == null || list.size == 0 // Noncompliant, use isNullOrEmpty

Compliant solution

val hasElemenents = list.isNotEmpty() // Compliant
val hasNoElemenents = list.isEmpty() // Compliant

fun isNullOrEmpty(list: List<Int>?): Boolean = list.isNullOrEmpty() // Compliant

Resources

Documentation