@Override public void checkClass(@NonNull ClassContext context, @NonNull ClassNode classNode) { scanForAndCheckSetOnTouchListenerCalls(context, classNode); // Ignore abstract classes. if ((classNode.access & Opcodes.ACC_ABSTRACT) != 0) { return; } if (context.getDriver().isSubclassOf(classNode, ANDROID_VIEW_VIEW)) { checkView(context, classNode); } if (implementsOnTouchListener(classNode)) { checkOnTouchListener(context, classNode); } }
@Override public void checkClass(@NonNull ClassContext context, @NonNull ClassNode classNode) { scanForAndCheckSetOnTouchListenerCalls(context, classNode); // Ignore abstract classes. if ((classNode.access & Opcodes.ACC_ABSTRACT) != 0) { return; } if (context.getDriver().isSubclassOf(classNode, ANDROID_VIEW_VIEW)) { checkView(context, classNode); } if (implementsOnTouchListener(classNode)) { checkOnTouchListener(context, classNode); } }
@SuppressWarnings("unchecked") // ASM API public static void checkSetOnTouchListenerCall( @NonNull ClassContext context, @NonNull MethodNode method, @NonNull MethodInsnNode call) { String owner = call.owner; // Ignore the call if it was called on a non-view. ClassNode ownerClass = context.getDriver().findClass(context, owner, 0); if(ownerClass == null || !context.getDriver().isSubclassOf(ownerClass, ANDROID_VIEW_VIEW)) { return; } MethodNode performClick = findMethod(ownerClass.methods, PERFORM_CLICK, PERFORM_CLICK_SIG); //noinspection VariableNotUsedInsideIf if (performClick == null) { String message = String.format( "Custom view `%1$s` has `setOnTouchListener` called on it but does not " + "override `performClick`", ownerClass.name); context.report(ISSUE, method, call, context.getLocation(call), message); } }
@SuppressWarnings("unchecked") // ASM API public static void checkSetOnTouchListenerCall( @NonNull ClassContext context, @NonNull MethodNode method, @NonNull MethodInsnNode call) { String owner = call.owner; // Ignore the call if it was called on a non-view. ClassNode ownerClass = context.getDriver().findClass(context, owner, 0); if(ownerClass == null || !context.getDriver().isSubclassOf(ownerClass, ANDROID_VIEW_VIEW)) { return; } MethodNode performClick = findMethod(ownerClass.methods, PERFORM_CLICK, PERFORM_CLICK_SIG); //noinspection VariableNotUsedInsideIf if (performClick == null) { String message = String.format( "Custom view `%1$s` has `setOnTouchListener` called on it but does not " + "override `performClick`", ownerClass.name); context.report(ISSUE, method, call, context.getLocation(call), message); } }
&& context.getDriver().isSubclassOf( classNode, ANDROID_APP_ACTIVITY)) { context.report(ISSUE, method, call, context.getLocation(call),
&& context.getDriver().isSubclassOf( classNode, ANDROID_APP_ACTIVITY)) { context.report(ISSUE, method, call, context.getLocation(call),