Findbugs来自构建器样式链接函数调用的未经检查/未确认的强制转换

时间:2018-03-04 00:35:31

标签: java sonarqube findbugs spotbugs

FindBugs使用以下构建器模式代码中的and()行报告未经检查/未确认的强制转换问题,以配置Spring安全性。

public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
    auth
        .inMemoryAuthentication()
            .withUser("admin").password("secret").roles("ADMIN")
                .and()
            .withUser("user").password("secret").roles("USER");
}

代码工作正常,我如何安抚FindBugs?

1 个答案:

答案 0 :(得分:-1)

修改

正如@ h3xStream所建议的那样(在下面的评论中),如果您使用任何代码分析工具遇到误报,最好的解决方案是配置工具忽略误报并采取措施纠正代码分析工具。这当然假设它确实是一个误报,并且您的代码在当前形式下是正确的,最好保持不变。

在紧要关头,您可以重写代码以防止误报被触发。这就是我在这个特殊情况下最终做的事情,虽然这只是一个解决方法:

我能够通过将代码更新为以下内容来阻止误报:

public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
    InMemoryUserDetailsManagerConfigurer<AuthenticationManagerBuilder> conf 
            = auth.inMemoryAuthentication();
    conf.withUser("admin").password("secret").roles("ADMIN");
    conf.withUser("user").password("secret").roles("USER");
}

由于我不再将这些功能链接在一起,因此返回值变得无关紧要,并且不再触发误报。