应使用 lambda 删除未使用的方法参数 (squid:S1172) 误报

use*_*900 -1 java lambda false-positive method-parameters sonarlint

我有一个使用参数作为 lambda 表达式的工作方法

private BiConsumer<List<String>, Properties> handleList(Properties p) {
    return (list, prop) -> executeSubList(list, prop);
}
Run Code Online (Sandbox Code Playgroud)

因为p我收到了来自 SonarLint 的误报警告

Unused method parameters should be removed (squid:S1172)
Run Code Online (Sandbox Code Playgroud)

如果我更改prop为,p则会出现编译错误

Lambda 表达式的参数 p 无法重新声明封闭范围内定义的另一个局部变量

使用方法参数作为 lambda 参数时是否存在真正的问题或者是否存在误报检查?

Mur*_*nik 5

这个问题是真实的。此方法返回在一对 or和参数上BiConsumer运行的a ,但这样做与 无关。你可以直接删除它:executeSubListList<String>Propertiesp

private BiConsumer<List<String>, Properties> handleList() {
    // p was never used, and can just be removed -------^
    return (list, prop) -> executeSubList(list, prop);
}
Run Code Online (Sandbox Code Playgroud)