【问题标题】:Strange behaviour of findbug with RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT带有 RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT 的 findbug 的奇怪行为
【发布时间】:2019-08-19 05:22:12
【问题描述】:

我有 findebug,它在一种情况下检查发现错误而在另一种情况下不检查,我完全不明白它是如何连接的。

所以我遇到了这个 RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT 并开始尝试不同的代码,并找到了修复这个警告的变体,但它看起来与报告的问题完全无关。

此代码确实会生成 RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT

        final Node currentProjectNode = TripleUtil.createNode(projectId);

        final ParameterizedSparqlString pQuery = new ParameterizedSparqlString();
        pQuery.setNsPrefix(TripleUtil.NS_PREFIX, TripleUtil.NS);

而且这段代码不会产生错误

        final Node currentProjectNode = TripleUtil.createNode(projectId);
        final PrefixMappingImpl prefixMapping = new PrefixMappingImpl();
        prefixMapping.setNsPrefix(TripleUtil.NS_PREFIX, TripleUtil.NS);
        final ParameterizedSparqlString pQuery = new ParameterizedSparqlString();
        pQuery.setNsPrefix(TripleUtil.NS_PREFIX, TripleUtil.NS);

如您所见,我只是实例化类,然后使用它的方法,仅此而已,我没有更改生成错误的代码,我没有更改生成错误的方法。看起来在第一个示例 findbug 中找不到正确的实现或其他东西,但我不明白为什么? 毕竟不应该报道,因为 prefixMapping.setNsPrefix 做一些工作而不仅仅是返回值。

【问题讨论】:

    标签: java jena findbugs false-positive


    【解决方案1】:

    当调用函数没有任何副作用时,如果结果被忽略,那么调用的意义何在?在这种情况下,要么函数调用无用而应被删除,要么源代码的行为不符合预期。

    设置prefixMapping的值后需要进行一些操作。

    【讨论】:

      猜你喜欢
      • 2011-03-16
      • 2011-08-07
      • 1970-01-01
      • 2012-11-12
      • 2012-01-10
      • 2016-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多