import javax.annotation.Nonnull; import javax.enterprise.event.Observes; import java.io.IOException; import java.io.NotSerializableException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.List; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionForm; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.actions.BaseAction; class A extends B{ void doSomething(int a, int b) { // Noncompliant {{Remove this unused method parameter "b".}} [[sc=31;ec=32]] compute(a); } void doSomething(int a) { compute(a); } @Override void doSomethingElse(int a, int b) { // no issue reported on b compute(a); } } class B { void doSomethingElse(int a, int b) { compute(a); compute(b); } void compute(int a){ a++; } } class C extends B { int bar; void doSomethingElse(int a, int b) { // no issue reported on b compute(a); } void foo(int a) { compute(a); } } class D extends C { void foo(int b, int a) { // Noncompliant {{Remove this unused method parameter "b".}} [[sc=16;ec=17;secondary=51]] System.out.println(""); } } class E extends C { void bar(int a){ // Noncompliant System.out.println(""); } } interface inter { default void foo(int a) { compute(a); } default void bar(int a) { System.out.println("");} // Compliant - designed for extension void qix(int a); } class F { public static void main(String[] args) { } public static int main(String[] args) { System.out.println("");} // Noncompliant public static void main(int[] args) { System.out.println("");} // Noncompliant public static Object main(String[] args) { System.out.println("");} // Noncompliant public static void main(String args) { System.out.println("");} // Noncompliant public static void main(Double[] args) { System.out.println("");} // Noncompliant } class G implements inter { void foo(int a) { System.out.println("plop"); } private void writeObject(ObjectOutputStream out) // Compliant throws IOException { throw new NotSerializableException(getClass().getName()); } private void readObject(ObjectInputStream in) // Compliant throws IOException, ClassNotFoundException { throw new NotSerializableException(getClass().getName()); } } class OpenForExtension { public foo(int arg) { //no-op } protected bar(int arg) { //no-op } public void qix(int arg) { throw new UnsupportedOperationException("not implemented"); } private baz(int arg) { // Noncompliant //no-op } // Noncompliant@+1 private qiz(int arg1, int arg2) { } public Supplier<String> parameterNotUsed(final Object o) { return o::toString; } } class MethodFromSerialization { private void writeObject(ObjectOutputStream out) throws MyException { // Compliant throw new MyException(); } private void readObject(ObjectInputStream in) throws MyException { // Compliant throw new MyException(); } private static class MyException extends Exception {} } class Annotations { public void foo(@Observes Object event, int arg2) { // Compliant System.out.println(arg2); } public void bar(@Nonnull Object event, int arg2) { // Noncompliant {{Remove this unused method parameter "event".}} [[sc=35;ec=40]] System.out.println(arg2); } @MyAnnotation void qix(int a, int b) { // Compliant compute(a); } @SuppressWarnings("proprietary") void unknownWarning(int unused) { // Compliant } @SuppressWarnings({"rawtypes", "proprietary"}) void unknownWarningCombinedWithKnown(List list, int unused) { // Compliant List<String> strings = (List<String>) list; } @SuppressWarnings({"rawtypes", "unchecked"}) void foobar(List list, int unused) { // Noncompliant {{Remove this unused method parameter "unused".}} [[sc=30;ec=36]] List<String> strings = (List<String>) list; } @SuppressWarnings("unchecked") void uncheckedFoobar(List<?> list, int unused) { // Noncompliant {{Remove this unused method parameter "unused".}} [[sc=42;ec=48]] List<String> strings = (List<String>) list; } } class StrutsAction extends Action { void foo(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response, String s) { // Compliant System.out.println(s); } void bar(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response, String unused) { // Noncompliant {{Remove this unused method parameter "unused".}} System.out.println(""); } void qix(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { // Compliant System.out.println(""); } void qiz(ActionMapping mapping, ActionForm form) { // Compliant System.out.println(""); } } class StrutsAction2 extends BaseAction { void foo(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response, String unused) { // Noncompliant {{Remove this unused method parameter "unused".}} System.out.println(""); } void bar(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { // Compliant System.out.println(""); } void qiz(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpFakeResponse unusedResponse) { // Noncompliant {{Remove this unused method parameter "unusedResponse".}} System.out.println(""); } } class NotStrutsAction { void bar(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { // Noncompliant {{Remove this unused method parameter "response".}} doSomething(mapping); doSomething(form); doSomething(request); System.out.println(""); } } @interface MyAnnotation {}