有没有办法让 IntelliJ 回缩方法声明参数?

Posted

技术标签:

【中文标题】有没有办法让 IntelliJ 回缩方法声明参数?【英文标题】:Is there a way to get IntelliJ to back-indent method declaration parameters? 【发布时间】:2017-01-16 16:53:55 【问题描述】:

这适用于 IntelliJ 2016.2。

我正在清理一些导致 CheckStyle 违规并停止我们的 CI 构建的代码,这似乎是由于 IntelliJ 的代码样式规则而发生的。我可以手动修复这些,但是有两个问题:编辑器不加选择地应用这些规则,并且手动修复很多。如果有人再次运行代码格式化,它会将缩进设置为它想要的方式。

具体来说,多行方法签名的缩进如下所示:

我希望后续行中的参数在上一行的开头右侧缩进 4 个空格,而不是左括号。

有趣的是,format-as-you-type 对我来说是正确的,但是当我使用代码格式化程序时,它会像上面一样重新格式化它。

我可以通过转到首选项中的制表符和缩进并将“继续缩进”设置为 0 来获得一些方法:

但是这条规则被普遍应用,让其他东西看起来很糟糕,而且它不接受负值。

我已经进入了首选项中的“Editor.Code Style.Java.Wrapping and Braces.Method 声明参数”并尝试了那里的所有内容。我有“Chop down if long”,但由于缩进规则,这使得行 longer。我没有看到一种方法来指定它应该从哪里开始缩进或它应该缩进多少行。

这一点,再加上观察到方法 调用 的格式化表现出预期的行为(但更严重的是,不是 constructor 调用!),让我认为这是一个错误. IntelliJ 的格式化程序似乎被硬编码为使用左括号中的连续缩进,而不是方法声明本身。

有什么我遗漏的或一些可行的解决方法吗?

【问题讨论】:

第一张图片是格式化前,第二张是你理想的格式吗? 不,第二个是迄今为止我能做的最好的代码样式设置。让我编辑添加我想看到的内容。 【参考方案1】:

现在必须可以从 checkstyle 配置中导入 intellij 中的“代码样式”。

以下是从official response 到feature request 的摘录

    请安装 CheckStyle-IDEA 插件 (http://plugins.jetbrains.com/plugin/1065?pr=idea),可以通过插件库(设置|插件|浏览库)找到。 进入 Settings|Editor|Code Style,选择你想要导入 CheckStyle 配置的代码风格。 点击Manage...|Import..,选择“CheckStyle Configuration”,选择对应的CheckStyle配置文件。单击确定。 最后,您会看到一条消息“CheckStyle 配置设置已导入...方案”。

有了这个,Idea 应该维护 checkstyle 定义的格式规则。

【讨论】:

这就是我们前面所做的 - 导入了 checkstyle 设置。它仍然无法正确格式化。 那可能确实是Intellij的一个bug,会尝试多挖一点。

以上是关于有没有办法让 IntelliJ 回缩方法声明参数?的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ自动完成:自动完成期间的小写首字母

在 IntelliJ IDEA 中突出显示异常抛出器

IntelliJ:如何在 Eclipse 中自动突出显示变量

Intellij idea 2016 好占用CPU,不知道有没有解决方法

“ReadFile 函数”有没有办法让我不再声明要读取的特定字节数?

是否可以在 Intellij 中自动完成构建器?