Most of the time a block of code is empty when a piece of code is really missing. So such empty block must be either filled or removed.

Noncompliant Code Example

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

Compliant Solution

def compute(a, b)
  sum = a + b
  if  sum > 0
    puts "Positive result"
  end
  puts "Result: #{sum}"
end

Exceptions

When a block contains a comment, this block is not considered to be empty.

while and unless loops are also exception to the rule.

while @order.process_next; end # Compliant