标签: eclipse-formatter

如何为Java代码的某些部分关闭Eclipse代码格式化程序?

我有一些Java代码,其中SQL语句编写为Java字符串(请不要使用OR/M flamewars,嵌入式SQL就是这样 - 不是我的决定).

为了便于维护,我在几行代码中将SQL语句在语义上分解为几个连接的字符串.所以,而不是像:

String query = "SELECT FOO, BAR, BAZ FROM ABC WHERE BAR > 4";
Run Code Online (Sandbox Code Playgroud)

我有类似的东西:

String query =
    "SELECT FOO, BAR, BAZ" +
    "  FROM ABC          " +
    " WHERE BAR > 4      ";
Run Code Online (Sandbox Code Playgroud)

这种风格使SQL更易于阅读和维护(恕我直言),特别是对于较大的查询.例如,我可以将我的编辑器置于"覆盖"模式,并相当容易地就地修改文本.

请注意,此问题超出了SQL的特定示例.任何使用任何垂直格式编写的代码,特别是表格结构,都容易被漂亮的打印机破坏.

现在,一些项目成员使用Eclipse编辑器,语义格式在格式化整个源文件时经常被破坏.

有没有办法指示Eclipse在格式化方面忽略某些源代码行?

我正在寻找像切换Eclipse格式化程序的特殊注释.理想情况下,这样的评论可以配置为我们选择的任何内容,其他格式化程序也可以编程为尊重它:

// STOP-ECLIPSE-FORMATTING
String query =
    "SELECT FOO, BAR, BAZ" +
    "  FROM ABC          " +
    " WHERE BAR > 4      ";
// START-ECLIPSE-FORMATTING
Run Code Online (Sandbox Code Playgroud)

显然,一个"解决方案"是让我们的团队成员对JalopyJIndent这样的外部格式化程序进行标准化,但这不是这个问题的原因(也不是我对这个项目的决定):我正在寻找一种方法在临时的基础上避免使用Eclipse格式化程序.

理想情况下,解决方案将允许我插入Eclipse格式化程序的指令,而无需团队成员使用Eclipse进行任何IDE重新配置(除了可能选择格式化程序无关的命令注释:STOP-ECLIPSE-FORMATTINGSTOP-FORMATTING).

java eclipse code-formatting pretty-print eclipse-formatter

474
推荐指数
8
解决办法
15万
查看次数

最好的Eclipse代码格式化程序?

默认的Eclipse格式化程序以非常有趣的方式格式化我的Java代码.

例如:hello.show().x().y()奇怪地将其格式化为x().y(),并放在一个单独的行上.

还有其他基本格式化程序可以做得更好吗?

非常欢迎示例和链接.

java eclipse formatting eclipse-formatter

42
推荐指数
4
解决办法
8万
查看次数

从换行中阻止日食?

有没有办法让eclipse停止擦除现有的换行符?如果我有这样的方法签名,我无法弄清楚如何让eclipse不管它:

void foo(
    int arg1,
    int arg2,
    int arg3,
    int arg4)
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

使用各种设置,它会将参数折叠为一行,或者将它们包裹在某个边缘,如下所示:

void foo(
    int arg1, int arg2,
    int arg3, int arg4)
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

通过"包裹所有元素,新行中的每个元素",它确实保留了这个空白,但它总是会换行,这不是我想要的.我喜欢eclipse为缩进和大括号等应用格式,只是没有删除(或插入)任何换行符.

eclipse eclipse-formatter

33
推荐指数
4
解决办法
3万
查看次数

如何强制Eclipse Mars 4.5格式化程序不加入已包装的行?

我刚从日食Kepler转移到eclipse Mars,我的Java格式化程序似乎不再以同样的方式运行了.

我曾经能够做到以下几点:

object
    .method1()
    .method2()
    .method3();
Run Code Online (Sandbox Code Playgroud)

格式化程序会保留我的代码.然而,自从我改为eclipse火星后,一切都被包裹在一条线上.

我已经验证了格式化程序,我仍然选中"从不加入已包装的行"选项.我的项目没有使用关于eclipse格式化程序的特定设置.我尝试从头开始重新创建格式化程序,结果是一样的.

我如何强制eclipse不加入这些行呢?

谢谢

java eclipse eclipse-mars eclipse-formatter

13
推荐指数
1
解决办法
4503
查看次数

在Eclipse中自动更新格式化程序

我们在项目中依赖Eclipse格式化程序来强制执行格式约定.它很棒,我们非常喜欢它.

我们将格式化程序文件与源代码控制中的项目保持在一起,并要求每个人将此格式化程序导入Eclipse.唯一严重的问题是,每当有人修改格式化程序并提交更改时,每个团队成员都需要手动"重新导入"格式化程序.并且很容易忘记这样做,所以我们经常最终在团队中使用不同版本的格式化程序.

更新格式化程序文件时,有没有办法让Eclipse自动使用新版本的格式化程序?(我的意思是,我们可以只对Eclipse说"这是格式化程序文件的路径,总是使用此文件的当前版本作为格式化程序"?)这会很棒!

有任何想法吗?

eclipse formatter eclipse-formatter

12
推荐指数
1
解决办法
2637
查看次数

从intellij-idea导入代码样式格式设置到eclipse

我最近实现了maven Check样式插入我的项目并更改了intellij(我使用的)中的所有formater设置以符合此样式指南(他们现在这样做).

但是我需要为eclipse生成一个设置.xml文件,这样我的同事就可以自动格式化代码,这样它也符合这个样式指南.

我发现的问题是我看不到从intellij导出设置并将它们导入eclipse的方法.我无法手动配置eclipse以符合新风格指南的细微差别(延续缩进是主要问题).

任何帮助或想法都会很棒.:)

java eclipse intellij-idea checkstyle eclipse-formatter

7
推荐指数
1
解决办法
6089
查看次数

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

有没有办法阻止 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;
Run Code Online (Sandbox Code Playgroud)

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

我用谷歌搜索了一下并找到了旧消息,例如: https: //youtrack.jetbrains.com/issue/IDEABKL-6456

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

版本是:IntelliJ IDEA 2018.1(社区)

  • 编辑-一些信息:

“动态优化导入”已经未被选中。

intellij-idea eclipse-formatter intellij-idea-2018

7
推荐指数
1
解决办法
4076
查看次数

Eclipse代码格式化程序多行函数调用右括号缩进

目前我的eclipse格式化程序格式化一个多行函数调用,如下所示:

someObject.doSomething(
  some().long().chain().of().methods()
  );
Run Code Online (Sandbox Code Playgroud)

但我想要的是eclipse将结束括号与方法调用对齐:

someObject.doSomething(
  some().long().chain().of().methods()
);
Run Code Online (Sandbox Code Playgroud)

我已经尝试在代码格式化程序中使用新的换行和换行规则,但是无法实现这一点.什么是解决方案?


经过一段时间的挖掘后,我发现了一个类似的问题,它有一个可接受的答案但似乎没有回答同一个问题: Eclipse格式化程序是否可以配置为在括号之间正确缩进多行?

该问题的作者还指出:

编辑:我找到了"Line Wrapping" - >"包装行的默认缩进"和"数组初始化的默认缩进"的设置,并将它们设置为"1"而不是"0".这对于数组初始化器来说更好,但仍然不会缩减关闭的parethesis以匹配我想要它的方式的左括号:

eclipse code-formatting eclipse-formatter

6
推荐指数
1
解决办法
178
查看次数

Eclipse格式化程序拆分长字符串

有没有办法告诉 Eclipse 格式化程序,当字符串太长时,它应该将其拆分+自动适应最大线宽?

例如,如果我的最大线宽是 80,我会喜欢这个:

String s = "This is a very very very very very very very very very very very very very very very very very very very long String";
Run Code Online (Sandbox Code Playgroud)

变成这样:

String s = "This is a very very very very very very very very very very very"
+ " very very very very very very very very long String";
Run Code Online (Sandbox Code Playgroud)

eclipse eclipse-formatter

6
推荐指数
1
解决办法
912
查看次数

有关 Eclipse Code Formatter Xml 的文档

我正在寻找有关 Eclipse 代码格式化程序中不同参数的良好文档来源。我在堆栈溢出上找到了一些特定参数的好示例,但找不到任何全面的参数列表或不同间距选项的列表。例如,Google 格式化程序文件中的一项设置是

<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_parameter" value="1040"/>
Run Code Online (Sandbox Code Playgroud)

我已经看到了 16、48、80、81、1040 和 1585 等各种事物的对齐值,但似乎找不到任何具体的例子来说明每个事物试图做什么。我知道 16 试图将所有内容放在一行上,80 也会做同样的事情,但如果发生换行,它会将所有参数移动到自己的行中。

任何帮助将不胜感激。

java formatting eclipse-formatter visual-studio-code

6
推荐指数
1
解决办法
1010
查看次数

使用m2e配置Eclipse Formatter

在将Maven项目导入eclipse时是否有任何现有的m2e-extension来配置Eclipse Formatter?我们使用自定义checkstyle规则,m2eclipse为我们配置了Eclipse-CS-plugin.但另外我还要配置Eclipse Formatter ......

eclipse m2eclipse maven m2e eclipse-formatter

5
推荐指数
1
解决办法
719
查看次数