优化导入时如何避免重新排序

Posted

技术标签:

【中文标题】优化导入时如何避免重新排序【英文标题】:How to avoid reordering when optimize imports 【发布时间】:2018-09-26 06:49:18 【问题描述】:

有没有办法阻止 Intellij Idea 在运行优化导入时重新排列导入?我想避免这种情况,因为我在一个大型代码库上工作,大多数其他程序员都在使用 Eclipse。当 Idea 进行优化(例如删除未使用的导入)时,它总是将这些导入放在底部:

import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.EJBContext;
import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.interceptor.Interceptors;
import java.util.ArrayList;
import java.util.List;

当一些 eclipse 用户做同样的事情时,它被放置在顶部。我想避免这种情况,因为它可能会惹恼其他程序员,因为我是唯一在项目中使用 Idea IDE 的人。

我在 google 上搜索了一下,发现了旧消息,例如: https://youtrack.jetbrains.com/issue/IDEABKL-6456

我想知道在较新的 Idea 版本中是否有任何好的方法可以做到这一点。

版本为:IntelliJ IDEA 2018.1(社区)

编辑 - 一些信息:

“动态优化导入”已取消选中。

编辑 - 使用Eclipse Code Formatter 插件解决了这个问题。

【问题讨论】:

plugins.jetbrains.com/plugin/6546-eclipse-code-formatter 我已经在使用 eclipse 格式化程序,但无法配置它以避免混淆导入。 这是一个非常重要的信息!报告错误,插件应该可以很好地处理它 - 如果你配置正确。 在 Eclipse Code Formatter 配置中检查“手动配置”后,它现在可以工作了。 【参考方案1】:

转到首选项(设置)-> 编辑器-> 代码样式-> java -> 导入选项卡

在底部您可以找到导入布局。如果您的导入,这将确定结构。您应该删除所有内容,然后离开 import all other imports

它应该是这样的:

注意:不要忘记取消选中Layout static imports separately

注意 2:我使用的是 2018.1.2 EAP (Ultimate)

【讨论】:

不幸的是,这对我不起作用。我想是因为我使用eclipse formatter来格式化代码。 啊太糟糕了。也许您真的不需要 eclipse 格式化程序?您是否尝试将 eclipse xml 配置文件导入到您的样式设置中? (最好将其保存为单独的配置文件)。我对插件不熟悉,所以在这里盲拍。如果您需要帮助,请告诉我。 我需要它,因为即使我导入 xml 设置,Intellij 的格式也不完全像 eclipse。 这个答案似乎完全错误。这些设置用于事物的分组方式。 “优化导入”仍然坚持在任何组中按字母顺序重新排序,只是有了这些设置,我现在有了一个大组。在没有 Eclipse 格式化程序的 2020.2 上。可笑的是没有一种简单的方法来删除未使用的同时保持秩序。【参考方案2】:

对于即使在禁用“优化导入”后仍然面临此问题的人,您可能已经在项目级别保留了设置。

对我有用的解决方案 - 尝试删除“.idea”文件夹(其中包含您当前所有与项目相关的设置)并从“文件”菜单中执行“使缓存无效并重新启动”。

重新启动 IDE 后,您将看到问题已解决。

【讨论】:

以上是关于优化导入时如何避免重新排序的主要内容,如果未能解决你的问题,请参考以下文章

SSE 优化(行重新排序、操作整理)中的编译器(例如 g++)有多聪明

C 结构中的自动字段重新排序以避免填充

如何优化合并排序和快速排序

使用导航架构时如何设置“允许重新排序”?

使用 Intel 内在函数的位反向重新排序优化

调试linux内核时如何避免“优化”