Exakat\Analyzer\Variables\CloseNaming::analyze PHP Method

analyze() public method

public analyze ( )
    public function analyze()
    {
        $this->query(<<<GREMLIN
  def distance(String str1, String str2) {
    def str1_len = str1.length()
    def str2_len = str2.length()
    int[][] distance = new int[str1_len + 1][str2_len + 1]
    (str1_len + 1).times { distance[it][0] = it }
    (str2_len + 1).times { distance[0][it] = it }
    (1..str1_len).each { i ->
       (1..str2_len).each { j ->
          distance[i][j] = [distance[i-1][j]+1, distance[i][j-1]+1, str1[i-1]==str2[j-1]?distance[i-1][j-1]:distance[i-1][j-1]+1].min()
       }
    }
    distance[str1_len][str2_len]
  }

GREMLIN
);
        $this->atomIs('Function')->raw('where( __.sideEffect{ variables = []}.out("BLOCK").repeat( out() ).emit( hasLabel("Variable")).times(' . self::MAX_LOOPING . ').filter{ it.get().value("code").length() > 3}.sideEffect{ variables.push(it.get().value("code")); }.fold() )')->raw('sideEffect{ 
    variables = variables.unique().sort();
    found = []; 
    variables.each{ i -> 
        if (variables.findAll{ it != i && ( it != i + "s" && it + "s" != i) && distance( it , i) < 2 }.size() > 0) {
            found.add(i);
        }
    }
}')->atomInside('Variable')->raw('filter{ it.get().value("code") in found}');
        $this->prepareQuery();
    }
CloseNaming