
Unreachable code
public String getStrippedSubstring() {
int sstart = start, ssend = end;
while(sstart < ssend) {
char c = input.charAt(sstart);
if(c != ' ' || c != '\n' || c != '\r' || c != '\t') {
break;
}
++sstart;
}
....
}
V6019 Unreachable code detected. It is possible that an error is present. Tokenizer.java(172)
V6007 Expression ‘c != ‘\n” is always true. Tokenizer.java(169)
Two diagnostics decided to act together this time. They both issued warnings. The V6019 diagnostic pointed to an unreachable code fragment: ++sstart, and V6007 pointed to a condition in the if statement that will always be true.
Why will there always be true in the if block? The answer is very simple. In this statement several conditions are checked at once: c !=’ ‘ or c != ‘\n’, or c != ‘\r’, or c != ‘\t’. Whatever the input data, some of those will be true. Even if one of the checks is false, the next check will return true, and because of the || (or) operator, the condition in if will eventually be true. The condition in the if block will always be true. Therefore, the break statement, which prematurely ends the while loop, will trigger. As a result, the increment of the sstart variable will never be executed. This is exactly what the V6019 diagnostics noticed and started sounding the alarm.
Most likely, the programmer wanted to write something like this:
if(c != ' ' && c != '\n' && c != '\r' && c != '\t')
Please click here to see more bugs from this project.