Implicit inspection of $TEST

objectscriptQuality release 
1.0.0
Id 
OS0067
Rule type 
Code Smell
Severity 

Critical

Critical
SQALE characteristic 
  • Maintainability
    • Understandability
Tags 
clarity, confusing
Remediation function 
Constant/issue
Remediation cost 
5min

Those two constructs implicitly inspect the value of the $TEST special variable:

    /*
     * Example 1: set the x variable to 1 if $TEST evaluates to true.
     *
     * Note that there are TWO SPACES between IF and the actual statement.
     */
    IF  S x = 1
    /*
     * Example 2: set the y variable to 1 if $TEST evaluates to false.
     *
     * Note that there are TWO SPACES between ELSE and the actual statement.
     */
    E  S y = 1

As you can see, spacing in this case is critical; two spaces and more trigger an implicit check of $TEST.

This makes the code hard to read. For clarity reasons and in order to prevent any confusion, it is preferrable to explicitly inspect $TEST instead, as in, for instance:

    if ($TEST) { set x = 1 }
    // or
    if ('$TEST) { set y = 1 }

Exception

This rule will not trigger for ELSE legacy statements if the previous statement is a legacy IF, as in:

    if somecondition do ..something()
    else  write "condition not met", !