Hello Vadim,
The rule is ignoring unused parameters only in very particular cases:
- The method is overriding a method from a parent class (obviously, you may not need the parameter, but you can not get rid of it in the signature):
- The method is a method from the Serializable contract;
- The method has any kind of annotation;
- The method is identified as being "designed for extension".
You method does not satisfy the 3 first conditions. In order to consider a method as being "designed for extension", it needs to have an empty body (can contains comments), or its body should only throw an exception (such as NotImplementedException). In your case, we do not consider the method as being so, as you are obviously adding logic into its body. Remove the System.out.println method invocation and the issue will disappear. The same way, you can drop the Sysout in S1172DEscendant and the rule will not raise an issue, as you are overriding the method.
The rule does not check for subclasses overriding the method, because we only compute childClass -> parentClass(es) relations, on the fly.
Michael