Gre*_*tes 474 java eclipse code-formatting pretty-print eclipse-formatter
我有一些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).
xpm*_*teo 846
Eclipse 3.6允许您通过放置特殊注释来关闭格式,例如
// @formatter:off
...
// @formatter:on
Run Code Online (Sandbox Code Playgroud)
必须在Eclipse首选项中打开/关闭功能:Java > Code Style > Formatter.点击Edit,Off/On Tags使能Enable Off/On tags.
也可以在首选项中更改魔术字符串 - 请在此处查看Eclipse 3.6文档.
更多信息
Java > Code Style > Formatter > Edit > Off/On Tags
此首选项允许您定义一个禁用的标记和一个标记以启用格式化程序(请参阅格式化程序配置文件中的"关闭/打开标记"选项卡):

您还需要启用标志 Java Formatting
jit*_*ter 59
格式化程序中来自Eclipse 3.5 M4的AFAIK有一个选项"Never Join Lines",可以保留用户行中断.也许那就是你想要的.
还有这个丑陋的黑客
String query = //
"SELECT FOO, BAR, BAZ" + //
" FROM ABC" + //
" WHERE BAR > 4";
Run Code Online (Sandbox Code Playgroud)
Ren*_*aud 25
您可以使用另一种解决方案来抑制特定块注释的格式./*-在块注释的开头使用(注意连字符),如果格式化文件的其余部分,格式不会受到影响.
/*-
* Here is a block comment with some very special
* formatting that I want indent(1) to ignore.
*
* one
* two
* three
*/
Run Code Online (Sandbox Code Playgroud)
来源:Oracle的文档.
ili*_*nca 24
您可以将其配置为不加入已包装的行,而不是关闭格式.与Jitter的响应类似,这里是Eclipse STS:
属性→Java代码样式→格式化程序→启用项目特定设置或配置工作区设置→编辑→换行(选项卡)→选中"从不加入已包装的行"
保存,申请.

小智 16
您必须打开添加格式化程序标记的功能.在菜单栏中去:
Windows → Preferences Java → Code Style → Formatter
按Edit按钮.选择最后一个选项卡.注意On/Off框并使用复选框启用它们.
CPe*_*ins 14
如果将加号放在行的开头,则格式不同:
String query =
"SELECT FOO, BAR, BAZ"
+ " FROM ABC"
+ " WHERE BAR > 4";
Run Code Online (Sandbox Code Playgroud)
我正在使用固定宽度的字符串部分(用空格填充)以避免格式化程序弄乱我的SQL字符串缩进.这为您提供了混合结果,并且在SQL中没有忽略空格的情况下不起作用,但可能会有所帮助.
final String sql = "SELECT v.value FROM properties p "
+ "JOIN property_values v ON p.property_id = v.property_id "
+ "WHERE p.product_id = ? "
+ "AND v.value IS NOT NULL ";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
151596 次 |
| 最近记录: |