为所有本地项目切换活动的IntelliJ代码样式



我想根据Google java样式指南标准化我的java代码样式。我下载了intellij-java-google-style.xml,进行了一些自定义调整,并将其导入全局IDE部分的intellij中:

首选项>gt编辑器>gt代码样式>gt档位图标>gt导入方案>gtIntelliJ代码样式xml

这将代码样式应用于当前项目。但是,现有的IntelliJ项目保留其现有的代码样式。我可以在其他项目的下拉菜单中看到新的谷歌风格,但我必须为每个项目手动重新选择它。我的问题是我有数百个项目。

我想为所有现有的项目自动选择新的谷歌代码样式,而不必查看每个项目的首选项。但是怎么做呢?

注意:我不想在我的项目中自动格式化代码,那将是一场git噩梦。

如果您已经从scheme下拉菜单将样式xml文件导入到Stored in IDE中,那么它应该用作所有项目的默认文件。

如果您使用ApacheMaven或Gradle,则可以使用GoggleJava格式格式化所有现有项目。

在我看来,自动将代码格式应用于现有项目不是一个好主意,因为这会影响这些项目的变更日志。它使代码比较变得毫无意义。

IntelliJ不提供自动更改现有本地repo的代码样式的方法。所以我们需要跳出框框思考。

递归搜索和替换

事实证明IntelliJ将活动代码样式存储在.idea/codeStyles/codeStyleConfig.xml:中

<component name="ProjectCodeStyleConfiguration">
<state>
<option name="PREFERRED_PROJECT_CODE_STYLE" value="OldCodeStyle" />
</state>
</component>

我们可以对文件夹中的所有代码样式配置文件进行递归搜索和替换,并替换每个文件中的value字段。首先,确保将Google样式的XML导入到IntelliJ中,如问题中所述,并将其称为GoogleStyle

这是bash命令。CCD_ 6递归地搜索到CCD_ 7的所有路径。sed将当前代码样式替换为GoogleStyle

find ~/projects -name codeStyleConfig.xml -type f -print0 | xargs -0 sed -i "" -E "s/(.+PREFERRED_PROJECT_CODE_STYLE" value=")(.+)(" />)/1GoogleStyle3/"

此命令已在MacOS 11和IntelliJ 2020.2上进行了测试。我还没有在Linux上测试过。要了解命令的工作原理,请参阅此处和此处。对于Windows,您可以使用Notepad++执行regex查找和替换,安装类似Cygwin的bash库或查找PowerShell的等效库(请参阅此处和此处(。

最新更新