0

我已经将一个项目从 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 用户,您可以在其代码样式编辑器中使用此代码示例。希望你们中的任何人都可以解决这个问题:)

4

3 回答 3

1

你可以在 Idea 中使用这个插件:Eclipse Code Formatter

只需搜索并安装它Preferences -> Plugins -> Browse Repositories(button)

于 2013-10-21T12:23:16.250 回答
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));

为此,您需要将Settings > Code Style > Java > Tabs and Indents > "Continuation indent"设置为 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

您可以使用Live Template轻松创建环绕声,以将这些标签添加到代码块中。

于 2013-10-21T18:50:39.183 回答
0

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

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

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

于 2013-10-21T12:57:03.370 回答