【问题标题】:How to forbid multi-line lambdas by static analysis?如何通过静态分析禁止多行 lambda?
【发布时间】:2020-10-15 07:38:55
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您是否已经有一个可以添加检查的静态分析框架?
  • 我得到了 checkstyle,提到它并添加到标签中
  • 目前还没有好办法。我认为它可以通过正则表达式检查来完成,但它可能容易出错。谢谢你的想法,我在 checkstyle repo 中为它创建了新的功能请求。 github.com/checkstyle/checkstyle/issues/8341

标签: java maven static-analysis checkstyle


【解决方案1】:

从 checkstyle 8.37 开始,您可以使用LambdaBodyLengthCheck,它完全符合您的要求。您可以指定 lambda body 的最大长度,默认为 10。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 2019-10-23
    • 2021-12-14
    相关资源
    最近更新 更多