public void checkForAntiPatternsInQueryWithParserVisitors()

in bigquery-antipattern-recognition/src/main/java/com/google/zetasql/toolkit/antipattern/util/AntiPatternHelper.java [77:99]


    public void checkForAntiPatternsInQueryWithParserVisitors(InputQuery inputQuery, List<AntiPatternVisitor> visitorsThatFoundAntiPatterns, List<AntiPatternVisitor> parserVisitorList) {
        if(this.visitorMetricsMap == null) {
            setVisitorMetricsMap(parserVisitorList);
        }

        for (AntiPatternVisitor visitorThatFoundAntiPattern : parserVisitorList) {
            logger.info("Parsing query with id: " + inputQuery.getQueryId() +
                    " for anti-pattern: " + visitorThatFoundAntiPattern.getName());
            ASTNodes.ASTScript parsedQuery = Parser.parseScript( inputQuery.getQuery(), this.languageOptions);
            try{
                parsedQuery.accept((ParseTreeVisitor) visitorThatFoundAntiPattern);
                String result = visitorThatFoundAntiPattern.getResult();
                if(result.length() > 0) {
                    visitorsThatFoundAntiPatterns.add(visitorThatFoundAntiPattern);
                    this.visitorMetricsMap.merge(visitorThatFoundAntiPattern.getName(), 1, Integer::sum);
                }
            } catch (Exception e) {
                logger.error("Error parsing query with id: " + inputQuery.getQueryId() +
                        " for anti-pattern:" + visitorThatFoundAntiPattern.getName());
                logger.error(e.getMessage(), e);
            }
        }
    }