Idea 2025 开发 XiangShan 踩坑实录
大致情况是,用 IntelliJ IDEA 开发 XiangShan,手欠升级了 2025.1.3,然后发现代码高亮和自动补全都炸了,头铁研究了一下,可能是如下的原因:
- 2025会根据项目构建文件自动选择构建系统
- 存在
build.sbt
:使用 sbt - 存在
build.mill
:使用 bsp 支持mill
- 存在
- 然而 XiangShan 的 sbt 配置在 4 年前创建以后就再也没有维护过
- 并且使用的是旧版的
build.sc
,因此无法识别上面的 1.2. mill -i mill.idea.GenIdea/idea
生成的 xml 文件似乎无法正常识别- 综上,2025 会非常执着地导入一个未维护的 sbt 构建脚本,然后失败,然后代码高亮💥
workaround:手动使用 bsp
比较坑的是,idea 打开一个全新的项目(没有 .idea
文件夹)时会自动创建一些元数据,导致它又回到了试图导入 sbt 构建脚本的状态,所以必须在 idea 没有污染掉项目文件夹的情况下导入项目:
- 进入XiangShan,
rm -rf .idea && make bsp
- 若是本地项目,选择打开,选择 XiangShan 文件夹,顺利的话它会检测到已经存在的 bsp 配置和 .sbt 脚本,进而询问用户使用哪一个,选择 BSP,确认即可
- 若是远程项目,它不会询问 2.1.,然后又回去试图导入 sbt,大寄特寄,有两种解决思路:
- 在本地导入好后,将 .bsp 和 .idea 文件夹拷到服务器上,直接打开即可
- 先在远程打开一个临时文件夹(不要用 XiangShan),进入编辑器后左上角新建 -> 现有源中的项目,选择 XiangShan 文件夹,选择 BSP
下一个坑是 make bsp
不会将 build/
标记为已排除的目录,导致每次编译都会重新跑巨量的索引,占满 CPU,服务器使用 nfs 情况更严峻,搞不好直接远程连接就断了
解决:手动右键 build/
,将目录标记为->已排除