The analyzer has detected that there is a bitwise 'AND' (&) operation with an operand equal to 0. A code fragment may contain incorrect operator or operand.
Look at an example:
public class TypeAttribute { private static final int NOT_PUBLIC = 0x0, private static final int PUBLIC = 0x1, private static final int NESTED_PUBLIC = 0x2, private static final int NESTED_PRIVATE = 0x3 public static boolean isNotPublic(int type) { return (type & NOT_PUBLIC) == NOT_PUBLIC; } }
The 'isNotPublic' method checks if the argument has the 'NOT_PUBLIC' flag.
Such a check makes no sense since the 'NOT_PUBLIC' flag has a zero value, which means using this flag as an operand of the '&' operator always results in a zero value. Thus, in the presented implementation, we always get the true condition.
The correct implementation of the check may look as follows:
public static boolean isNotPublic(int type) { return type == NOT_PUBLIC; }
The analyzer also issues a warning if an operand equal to '0' is used with the '&=' operator. Such code looks questionable, because if one of the operands is '0', the result of the expression is also '0'.
This diagnostic is classified as: