Exakat\Analyzer\Structures\LogicalMistakes::analyze PHP Method

analyze() public method

public analyze ( )
    public function analyze()
    {
        // Note : support for parenthesis is added.
        //if ( $a != 1 || $a != 2)
        $this->atomIs('Logical')->codeIs(array('||', 'or'))->outIs('LEFT')->outIsIE('CODE')->atomIs('Comparison')->codeIs(array('!=', '!=='))->outIs(array('LEFT', 'RIGHT'))->atomIs(self::$CONTAINERS)->savePropertyAs('fullcode', 'var')->inIs(array('LEFT', 'RIGHT'))->inIsIE('CODE')->inIs('LEFT')->outIs('RIGHT')->outIsIE('CODE')->atomIs('Comparison')->codeIs(array('!=', '!=='))->outIs(array('LEFT', 'RIGHT'))->atomIs(self::$CONTAINERS)->samePropertyAs('fullcode', 'var')->back('first');
        $this->prepareQuery();
        //if ( $a == 1 || $a != 2)
        $this->atomIs('Logical')->codeIs(array('||', 'or'))->outIs('LEFT')->outIsIE('CODE')->atomIs('Comparison')->codeIs(array('==', '==='))->outIs(array('LEFT', 'RIGHT'))->atomIs(self::$CONTAINERS)->savePropertyAs('fullcode', 'var')->inIs(array('LEFT', 'RIGHT'))->inIsIE('CODE')->inIs('LEFT')->outIs('RIGHT')->outIsIE('CODE')->atomIs('Comparison')->codeIs(array('!=', '!=='))->outIs(array('LEFT', 'RIGHT'))->atomIs(self::$CONTAINERS)->samePropertyAs('fullcode', 'var')->back('first');
        $this->prepareQuery();
        //if ( $a == 1 && $a == 2)
        $this->atomIs('Logical')->codeIs(array('&&', 'and'))->outIs('LEFT')->outIsIE('CODE')->atomIs('Comparison')->codeIs(array('==', '==='))->outIs(array('LEFT', 'RIGHT'))->atomIs(self::$CONTAINERS)->savePropertyAs('fullcode', 'var')->inIs(array('LEFT', 'RIGHT'))->inIsIE('CODE')->inIs('LEFT')->outIs('RIGHT')->outIsIE('CODE')->atomIs('Comparison')->codeIs(array('==', '==='))->outIs(array('LEFT', 'RIGHT'))->atomIs(self::$CONTAINERS)->samePropertyAs('fullcode', 'var')->back('first');
        $this->prepareQuery();
        //if ( $a == 1 && $a != 2)
        $this->atomIs('Logical')->codeIs(array('&&', 'and'))->outIs('LEFT')->outIsIE('CODE')->atomIs('Comparison')->codeIs(array('==', '==='))->outIs(array('LEFT', 'RIGHT'))->atomIs(self::$CONTAINERS)->savePropertyAs('fullcode', 'var')->inIs(array('LEFT', 'RIGHT'))->inIsIE('CODE')->inIs('LEFT')->outIs('RIGHT')->outIsIE('CODE')->atomIs('Comparison')->codeIs(array('!=', '!=='))->outIs(array('LEFT', 'RIGHT'))->atomIs(self::$CONTAINERS)->samePropertyAs('fullcode', 'var')->back('first');
        $this->prepareQuery();
        // Extension to this rule :
        // Check for methodcalls, function calls
        // add support for xor (although, it is rare)
        // may be invert == and != ?
    }
LogicalMistakes