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

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


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

最佳答案

编辑:

如@ 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");
}


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

关于java - 通过构建器样式的链式函数调用进行未经检查/未经确认的Findbugs强制转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49090751/

10-10 10:27