springboot~spring-javaformat插件惹的祸
起因
我们在写代码时,有时间代码过高,尤其是stream流的时间,可能有多个map,filter,sort组成,这样我们更希望看到的是一种可读性更好的风格
- 我的代码是这样的
- 于是我手动将map进行了换行,想让代码更清晰一些
- 我编码之后,添加了手动换行,我习惯上会进行代码统一格式化,idea里的ctrl+alt+L,这时,我发现我的换行没了,又回去了
- 于是我问了chatgpt,是否是自己配置的原因
在 IntelliJ IDEA 中手动修改代码对齐并按回车换行后,如果在进行自动格式化后发现修改的部分被恢复,这可能是由于以下几种情况导致的:
1. 自动格式化设置:检查你的 IntelliJ IDEA 的自动格式化设置,确保它与你期望的格式化风格一致。你可以在 "Preferences"(或 "Settings")菜单中的 "Editor" -> "Code Style" 下找到相应的设置。确保选择了适合你的编码风格的选项,并且没有启用不希望的格式化功能(例如,"Reformat on file save")。
2. 代码风格设置:如果你手动修改的代码与当前项目的代码风格设置不一致,自动格式化可能会覆盖你的更改。在 "Preferences"(或 "Settings")菜单中的 "Editor" -> "Code Style" 中,选择适合你的项目的代码风格,并确保与你手动修改的代码一致。
3. 编辑器行为设置:在 IntelliJ IDEA 的 "Preferences"(或 "Settings")菜单中,检查 "Editor" -> "General" -> "Smart Keys" 设置。有些选项,如 "Reformat block on typing '}'" 或 "Keep when formatting",可能会影响自动格式化后的代码。
4. 版本控制:如果你的项目使用了版本控制系统(如 Git),在进行提交或拉取操作时,IntelliJ IDEA 可能会根据版本控制的规则自动格式化代码。这可能导致你手动修改的部分被恢复为代码库中的规范格式。
请检查上述设置,并根据你的需求进行适当的调整,以确保代码格式化的行为与你期望的一致。如果问题仍然存在,请提供更多的上下文信息,例如你手动修改的代码示例和你的自动格式化设置,以便更好地帮助你解决问题。
- 最后,我想起来,我使用了spring格式统一的代码格式插件spring-javaformat,这个插件有两个时机会触发:
- build项目时,会通过spring-javaformat去检查你的代码格式,不符合要求会提示你
- 在编辑单个文件时,使用ctrl+alt+L进行代码格式化时,这个插件也会把你代码更新成符合它的格式
- 我把这个插件删除后,再执行一下格式化,问题就解决了,不过,我最后还是把spring-javaformat插件装上了,因为这是一种统一的风格,我们应该去适应它和遵守它,因为它是一个标准化的方案
<build>
<plugins>
<!--代码格式插件,默认使用spring 规则 ./mvnw spring-javaformat:apply
在进行ctrl+alt+L组合键进行代码格式化时,样式也会生效的 -->
<plugin>
<groupId>io.spring.javaformat</groupId>
<artifactId>spring-javaformat-maven-plugin</artifactId>
<version>${spring.checkstyle.plugin}</version>
<executions>
<execution>
<phase>validate</phase>
<inherited>true</inherited>
<goals>
<goal>validate</goal>
</goals>
</execution>
</executions>
</plugin>