下面的代码分析是什么意思?

What does the following code analysis mean?

我在我的代码 (AggregateFunctions) 中只有一个地方实例化了一个对象,如下所示。

    private String selectColumns() {
        String query = "SELECT ";

        if (this.distinctResults) {
            query = query + "DISTINCT ";
        }

        SelectColumn selectColumn = new SelectColumn(this);

        if (!this.applyAggregation) {
            for (Object object : this.columns) {
                query = selectColumn.selectColumn(query, object);
            }
        } else {
            AggregateFunctions aggregateFunctions = new AggregateFunctions(this);
            query = query + aggregateFunctions.select();
        }
        //Remove extra ', '
        query = query.substring(0, query.length() - 2) + " FROM ";
        return query;
    }

构造函数:

    public AggregateFunctions(@NotNull SqlQueryGenerator sqlQueryGenerator) {
        this.spaceEncloser = sqlQueryGenerator.getSpaceEncloser();
        this.selectColumn = new SelectColumn(sqlQueryGenerator);
        JSONObject formData = sqlQueryGenerator.getFormData();
        this.columns = formData.getJSONArray("columns");
        this.aggregateJson = formData.getJSONObject("functions").getJSONArray("aggregate");
        this.aggregatesList = new ArrayList<Aggregate>();
        prepareAggregates();
        this.query = new StringBuilder();
    }

    public SelectColumn(SqlQueryGenerator sqlQueryGenerator) {
        this.sqlQueryGenerator = sqlQueryGenerator;
    }

但是 IntelliJ 代码分析对递归调用说了以下内容。基本上没看懂意思。谁能详细点帮我理解一下?

问题概要

Constructor has usage(s) but they all belong to recursive calls chain that has no members reachable from entry points.   

问题解决

  1. 安全删除
  2. 注释掉
  3. 添加为入口点

可能在您调用的代码中 AggregateFunctions 的构造函数中,您返回到另一个 class 中的方法 selectColumns()。这样递归就永远不会结束。

我的猜测是这里

 JSONObject formData = sqlQueryGenerator.getFormData();

或此处某处:

 this.selectColumn = new SelectColumn(sqlQueryGenerator);

您转到上一个 class 并转到创建新聚合的相同方法,并且正在发生循环。

您使用 this 调用 AggregateFunction - 这是同一个对象。但是随后在构造函数中调用 this 的方法。检查这些方法,如果它们中的任何一个有另一个 AggregateFunction 对象的创建 - 这是你的问题。

这是来自 未使用声明 检查的警告。 IntelliJ IDEA 认为构造函数无法从任何入口点访问。然而,构造函数并非未使用,但用法本身是无法访问的。

如果您的代码不是这种情况,则可能是 IntelliJ IDEA 中的错误。

我遇到了这个问题,这是因为该对象没有在其他任何地方使用