Why is this an issue?

An empty code block is confusing. It will require some effort from maintainers to determine if it is intentional or indicates the implementation is incomplete.

def compute(a, b)
  sum = a + b
  if  sum > 0 # Noncompliant: is the block empty on purpose, or is code missing?
  end
  puts "Result: #{sum}"
end

Removing or filling the empty code blocks takes away ambiguity and generally results in a more straightforward and less surprising code.

Exceptions

The rule ignores:

while @order.process_next; end # Compliant by exception