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: