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
{
}
}