IntelliJ中的代码样式设置(缩进)

时间:2013-10-21 12:18:34

标签: java intellij-idea

我已将Eclipse中的项目导入IntelliJ,我想配置代码样式设置。但是我在声明数组时遇到了问题。

eclipse格式化程序将代码格式化如下:

@Before
public void prepareData() throws Exception //NOPMD
{
    LOG.info("Preparing setup data");
    new CoreBasicDataCreator().createEssentialData(null, null);
    CatalogManager.getInstance().createEssentialData(Collections.EMPTY_MAP, null);
    serviceLayerDataSetup.createJobPerformables();
    impExSystemSetup.createAutoImpexEssentialData(new SystemSetupContext(Collections.EMPTY_MAP, Type.ESSENTIAL,
            CuppyConstants.EXTENSIONNAME));
    cuppySystemSetup.importBasics(new SystemSetupContext(Collections.singletonMap(CuppyConstants.PARAM_BASICS, new String[]
    { CuppyConstants.PARAM_BASICS_PLAYERS }), Type.NOTDEFINED, CuppyConstants.EXTENSIONNAME));
    cuppySystemSetup.importWC2002(new SystemSetupContext(Collections.singletonMap(CuppyConstants.PARAM_WC2002, new String[]
    { CuppyConstants.PARAM_WC2002_SETUP, CuppyConstants.PARAM_WC2002_RESULTS_PRELIMINARIES,
            CuppyConstants.PARAM_WC2002_RESULTS_FINALS, CuppyConstants.PARAM_WC2002_BETS_PRELIMINARIES,
            CuppyConstants.PARAM_WC2002_BETS_FINALS }), Type.NOTDEFINED, CuppyConstants.EXTENSIONNAME));

    LOG.info("Finished preparation of setup data");

    LOG.info("Preparing session");
    JaloSession.getCurrentSession().setUser(UserManager.getInstance().getUserByLogin("sternthaler"));
    LOG.info("Finished preparation of session");
}

IntelliJ将代码重新格式化为:

@Before
public void prepareData() throws Exception //NOPMD
{
    LOG.info("Preparing setup data");
    new CoreBasicDataCreator().createEssentialData(null, null);
    CatalogManager.getInstance().createEssentialData(Collections.EMPTY_MAP, null);
    serviceLayerDataSetup.createJobPerformables();
    impExSystemSetup.createAutoImpexEssentialData(new SystemSetupContext(Collections.EMPTY_MAP, Type.ESSENTIAL,
            CuppyConstants.EXTENSIONNAME));
    cuppySystemSetup.importBasics(new SystemSetupContext(Collections.singletonMap(CuppyConstants.PARAM_BASICS, new String[]
            { CuppyConstants.PARAM_BASICS_PLAYERS }), Type.NOTDEFINED, CuppyConstants.EXTENSIONNAME));
    cuppySystemSetup.importWC2002(new SystemSetupContext(Collections.singletonMap(CuppyConstants.PARAM_WC2002, new String[]
            { CuppyConstants.PARAM_WC2002_SETUP, CuppyConstants.PARAM_WC2002_RESULTS_PRELIMINARIES,
                    CuppyConstants.PARAM_WC2002_RESULTS_FINALS, CuppyConstants.PARAM_WC2002_BETS_PRELIMINARIES,
                    CuppyConstants.PARAM_WC2002_BETS_FINALS }), Type.NOTDEFINED, CuppyConstants.EXTENSIONNAME));

    LOG.info("Finished preparation of setup data");

    LOG.info("Preparing session");
    JaloSession.getCurrentSession().setUser(UserManager.getInstance().getUserByLogin("sternthaler"));
    LOG.info("Finished preparation of session");
}

如果您是IntelliJ用户,则可以在其代码样式编辑器中使用此代码示例。 希望你们中的任何人都能解决这个问题:)

3 个答案:

答案 0 :(得分:1)

您可以在Idea中使用此插件:Eclipse Code Formatter

只需在Preferences -> Plugins -> Browse Repositories(button)

中搜索并安装即可

答案 1 :(得分:1)

如果我理解正确,你想要这个:

cuppySystemSetup.importBasics(new SystemSetupContext(Collections.singletonMap(CuppyConstants.PARAM_BASICS, new String[]
    {CuppyConstants.PARAM_BASICS_PLAYERS}), Type.NOTDEFINED, CuppyConstants.EXTENSIONNAME));

格式如下

cuppySystemSetup.importBasics(new SystemSetupContext(Collections.singletonMap(CuppyConstants.PARAM_BASICS, new String[]
{CuppyConstants.PARAM_BASICS_PLAYERS}), Type.NOTDEFINED, CuppyConstants.EXTENSIONNAME));

为此,您需要设置设置>代码风格> Java>标签和缩进> “延续缩进”为0.但是请注意,这会使所有包裹的行都刷新。我不确定这是不是你想要的。或者,如果您只是想要特定的代码。如果是的话,请你澄清一下。

另请注意,在IDEA 13(目前位于beta/EAP)中,您可以通过注释使用关闭代码段的格式。 (此功能是通过IDEA-56995添加的)。标签是可配置的,默认为下面显示的值

// @formatter:off
cuppySystemSetup.importBasics(new SystemSetupContext(Collections.singletonMap(CuppyConstants.PARAM_BASICS, new String[]
{CuppyConstants.PARAM_BASICS_PLAYERS}), Type.NOTDEFINED, CuppyConstants.EXTENSIONNAME));
// @formatter:on

您可以使用实时模板轻松创建环绕声,将这些标记添加到代码块中。

答案 2 :(得分:0)

也许你应该在代码风格java中使用“在重新格式化时保留”“换行符”。

不是很漂亮,但它有时是处理糟糕遗留代码的唯一方法(使用空格和所有......)。

在您的示例中,您可以从方法调用中提取数组(和其他变量)的声明,这样您可能会获得与Eclipse相同的结果。此外,恕我直言,它可以使您的代码更容易阅读,因为实际上很难快速弄清楚这些代码正在做什么。