include::../description.adoc[] == Noncompliant Code Example ---- void doSomething(int a, int b) { // "b" is unused compute(a); } ---- == Compliant Solution ---- void doSomething(int a) { compute(a); } ---- == Exceptions The rule will not raise issues for unused parameters: * that are annotated with ``@javax.enterprise.event.Observes`` * in overrides and implementation methods * in interface ``default`` methods * in non-private methods that only ``throw`` or that have empty bodies * in annotated methods, unless the annotation is ``@SuppressWarning("unchecked")`` or ``@SuppressWarning("rawtypes")``, in which case the annotation will be ignored * in overridable methods (non-final, or not member of a final class, non-static, non-private), if the parameter is documented with a proper javadoc. ---- @Override void doSomething(int a, int b) { // no issue reported on b compute(a); } public void foo(String s) { // designed to be extended but noop in standard case } protected void bar(String s) { //open-closed principle } public void qix(String s) { throw new UnsupportedOperationException("This method should be implemented in subclasses"); } /** * @param s This string may be use for further computation in overriding classes */ protected void foobar(int a, String s) { // no issue, method is overridable and unused parameter has proper javadoc compute(a); } ---- include::../see.adoc[]