我有一些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)
显然,一个"解决方案"是让我们的团队成员对Jalopy或JIndent这样的外部格式化程序进行标准化,但这不是这个问题的原因(也不是我对这个项目的决定):我正在寻找一种方法在临时的基础上避免使用Eclipse格式化程序.
理想情况下,解决方案将允许我插入Eclipse格式化程序的指令,而无需团队成员使用Eclipse进行任何IDE重新配置(除了可能选择格式化程序无关的命令注释:STOP-ECLIPSE-FORMATTING→ STOP-FORMATTING).
默认的Eclipse格式化程序以非常有趣的方式格式化我的Java代码.
例如:hello.show().x().y()奇怪地将其格式化为x()和.y(),并放在一个单独的行上.
还有其他基本格式化程序可以做得更好吗?
非常欢迎示例和链接.
有没有办法让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为缩进和大括号等应用格式,只是没有删除(或插入)任何换行符.
我刚从日食Kepler转移到eclipse Mars,我的Java格式化程序似乎不再以同样的方式运行了.
我曾经能够做到以下几点:
object
.method1()
.method2()
.method3();
Run Code Online (Sandbox Code Playgroud)
格式化程序会保留我的代码.然而,自从我改为eclipse火星后,一切都被包裹在一条线上.
我已经验证了格式化程序,我仍然选中"从不加入已包装的行"选项.我的项目没有使用关于eclipse格式化程序的特定设置.我尝试从头开始重新创建格式化程序,结果是一样的.
我如何强制eclipse不加入这些行呢?
谢谢
我们在项目中依赖Eclipse格式化程序来强制执行格式约定.它很棒,我们非常喜欢它.
我们将格式化程序文件与源代码控制中的项目保持在一起,并要求每个人将此格式化程序导入Eclipse.唯一严重的问题是,每当有人修改格式化程序并提交更改时,每个团队成员都需要手动"重新导入"格式化程序.并且很容易忘记这样做,所以我们经常最终在团队中使用不同版本的格式化程序.
更新格式化程序文件时,有没有办法让Eclipse自动使用新版本的格式化程序?(我的意思是,我们可以只对Eclipse说"这是格式化程序文件的路径,总是使用此文件的当前版本作为格式化程序"?)这会很棒!
有任何想法吗?
我最近实现了maven Check样式插入我的项目并更改了intellij(我使用的)中的所有formater设置以符合此样式指南(他们现在这样做).
但是我需要为eclipse生成一个设置.xml文件,这样我的同事就可以自动格式化代码,这样它也符合这个样式指南.
我发现的问题是我看不到从intellij导出设置并将它们导入eclipse的方法.我无法手动配置eclipse以符合新风格指南的细微差别(延续缩进是主要问题).
任何帮助或想法都会很棒.:)
有没有办法阻止 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(社区)
“动态优化导入”已经未被选中。
目前我的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 格式化程序,当字符串太长时,它应该将其拆分+以自动适应最大线宽?
例如,如果我的最大线宽是 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 代码格式化程序中不同参数的良好文档来源。我在堆栈溢出上找到了一些特定参数的好示例,但找不到任何全面的参数列表或不同间距选项的列表。例如,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 也会做同样的事情,但如果发生换行,它会将所有参数移动到自己的行中。
任何帮助将不胜感激。
在将Maven项目导入eclipse时是否有任何现有的m2e-extension来配置Eclipse Formatter?我们使用自定义checkstyle规则,m2eclipse为我们配置了Eclipse-CS-plugin.但另外我还要配置Eclipse Formatter ......
eclipse ×9
java ×5
formatting ×2
checkstyle ×1
eclipse-mars ×1
formatter ×1
m2e ×1
m2eclipse ×1
maven ×1
pretty-print ×1