Once control flow has been moved out of the current code block, any subsequent statements become effectively unreachable.

Why is this an issue?

Jump statements (return, break and continue) move control flow out of the current code block. So any statements that come after a jump are dead code.

Noncompliant code example

fun foo(a: Int): Int {
  var i = 10;
  return a + i;       // Noncompliant
  i++;                // dead code
}

Compliant solution

fun foo(a: Int): Int {
  var i = 10;
  return a + i;
}

Resources