== Why is this an issue? include::../description.adoc[] === Exceptions This rule ignores assignments in conditions of `while` statements and assignments enclosed in relational expressions. [source,java] ---- void processInput(BufferedReader br) { String line; while ((line = br.readLine()) != null) { processLine(line); } } Object foo; if ((foo = bar()) != null) { // do something with "foo" } ---- This rule also ignores chained assignments, including compound assignments. [source,java] ---- int j, i = j = 0; int k = (j += 1); byte[] result, bresult; result = (bresult = new byte[len]); ---- == How to fix it include::../how-to-fix-it.adoc[] === Code examples ==== Noncompliant code example [source,java,diff-id=1,diff-type=noncompliant] ---- String str; if (!(str = cont.substring(pos1, pos2)).isEmpty()) { // Noncompliant // do something with "str" } ---- ==== Compliant solution [source,java,diff-id=1,diff-type=compliant] ---- String str = cont.substring(pos1, pos2); if (!str.isEmpty()) { // do something with "str" } ---- include::../see.adoc[] * https://wiki.sei.cmu.edu/confluence/x/ITZGBQ[CERT, EXP51-J.] - Do not perform assignments in conditional expressions ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) include::../message.adoc[] include::../highlighting.adoc[] ''' == Comments And Links (visible only on this page) include::../comments-and-links.adoc[] endif::env-github,rspecator-view[]