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. When a block contains a comment, this block is not considered to be empty.

The following code snippet illustrates this rule:

void doSomething() {
  int myVar = 0;
  for (int i = 0; i< 4; i++) // Non-Compliant
  {
  }
  for (int i = 0; i< 4; i++); // Compliant as there is no block

  if (myVar == 4) // Compliant as the block contains at least a comment
  {
    // nothing to do
  }
  else // Compliant
  {
    doSomething();
  }

  try // Non-Compliant
  {
  }
  catch (Exception e) // Non-Compliant
  {
  }
}