public function analyze()
{
$controllers = '["\\\\zend_controller_action", "\\\\zend\\\\mvc\\\\controller\\\\abstractactioncontroller"]';
// Methods ending with Action must be in controller
$this->atomIs('Function')->hasClass()->outIs('NAME')->regexIs('code', 'Action\\$')->goToClass()->outIs(array('EXTENDS', 'IMPLEMENTS'))->raw('where( __.emit().repeat( __.in("DEFINITION").out("EXTENDS", "IMPLEMENTS")).times(' . self::MAX_LOOPING . ')
.has("fullnspath", within(' . $controllers . '))
.count().is(eq(0)) )')->back('first');
$this->prepareQuery();
// Methods ending with Action must be public
$this->atomIs('Function')->hasClass()->hasOut(array('PRIVATE', 'PROTECTED'))->outIs('NAME')->regexIs('code', 'Action\\$')->goToClass()->outIs(array('EXTENDS', 'IMPLEMENTS'))->raw('where( __.emit().repeat( __.in("DEFINITION").out("EXTENDS", "IMPLEMENTS")).times(' . self::MAX_LOOPING . ')
.has("fullnspath", within(' . $controllers . '))
.count().is(neq(0)) )')->back('first');
$this->prepareQuery();
}