如何通过静态分析禁止多行lambdas?

How to forbid multi-line lambdas by static analysis?

我有一个遗留代码库,它受到像这样冗长的 lambda 的影响。

collection.forEach(item -> { 
   // 100 lines of logic buried here
});

其中大部分可以重构为 类 实现 CallableRunnableConsumer,这将大大提高代码的可读性。

如何为多个表达式的 lambda 执行单独的 类(最好通过 checkstyle)? 我希望尽可能少地看到 ... -> { ...; },但是 ... -> ... 也可以。

从 checkstyle 8.37 开始,您可以使用 LambdaBodyLengthCheck,它完全可以满足您的需求。您可以指定 lambda 主体的最大长度,默认为 10。