使Eclipse的Java代码格式化程序忽略块注释


78

有没有办法使Eclipse的内置Java代码格式化程序忽略注释?每当我运行它时,它就会变成:

    /*
     * PSEUDOCODE
     * Read in user's string/paragraph
     * 
     * Three cases are possible
     * Case 1: foobar
     *         do case 1 things
     * Case 2: fred hacker
     *         do case 2 things
     * Case 3: cowboyneal
     *         do case 3 things
     *         
     * In all cases, do some other thing
     */

到这个:

    /*
     * PSEUDOCODE Read in user's string/paragraph
     * 
     * Three cases are possible Case 1: foobar do case 1 things Case 2: fred
     * hacker do case 2 things Case 3: cowboyneal do case 3 things
     * 
     * In all cases, do some other thing
     */

我已经使用过Windows>首选项> Java>代码样式>格式设置,但是找不到用于保留注释格式的设置。我正在使用Eclipse 3.4.0。


就在Formatter配置中,我不知道您怎么会丢失它。编辑配置文件,有一个带有8个选项卡的对话框,最后一个选项卡用于注释格式。
skaffman

我确实看到了“注释”选项卡,但是无论我使用哪种复选框组合,都会出现格式问题。
流行


我在Eclipse中使用Scala遇到了同样的问题,但是以下解决方案是特定于Java的,因为Scala代码格式化程序选项卡具有不同的选项。有没有办法关闭Scala的注释重新格式化?
Glenn Strycker 2014年

Answers:


40

更新2010年,随着由OP尖在这个答案,特殊字符串// @formatter:off在Eclipse 3.6就足够了。

在提出问题时不可用


原始答案:2009年6月,Eclipse 3.4 / 3.5

使用Java Formatter(Windows > Preferences > Java > Code Style > Formatter),您可以创建一个新的Formatter配置文件。

在“注释”选项卡(在eclipse3.5中)中,可以确保在“ Javadoc comment settings”中取消选中“ Format HTML tags”。
还要检查Never join linesGeneral settings”部分中的“ ”。

然后,您的评论应写为:

/**
 * PSEUDOCODE
 * Read in user's string/paragraph
 * 
 * Three cases are possible:
 * <dl>
 *   <dt>Case 1: foobar</dt>
 *     <dd>        do case 1 things</dd>
 *   <dt>Case 2: fred hacker</dt>
 *     <dd>        do case 2 things</dd>
 *   <dt>Case 3: cowboyneal</dt>
 *     <dd>        do case 3 things</dd>
 * </dl>        
 * In all cases, do some other thing
 */

注意:我做了一个Javadoc注释,而不是一个简单的注释,因为我认为其中包含这么多文本的注释最好放在方法的前面。另外,Javadoc部分具有更多可使用的格式化参数。
如果是在一个方法(真正的Javadoc)的面前,HTML标签<dl><dt>并且<dd>将有助于中的Javadoc视图中正确地呈现它。


1
对我而言,此答案的相关部分是HTML标签不会在换行符等处自动插入。对大多数人来说可能很明显,但是直到我在这里看到它之前,我才意识到我必须手工编写<br> s之类的东西。
流行

@Lord Torgamus:不仅您必须添加那些标签,而且第一句话在<br />!之前需要一个句点和一个空格。(见bugs.sun.com/bugdatabase/view_bug.do?bug_id=4165985
VonC

我在Eclipse中使用Scala遇到了同样的问题,但是以下解决方案是特定于Java的,因为Scala代码格式化程序选项卡具有不同的选项。有没有办法关闭Scala的注释重新格式化?
Glenn Strycker 2014年

1
这不能回答所提出的问题
Enerccio '18

182

您可以使用另一种解决方案来禁止特定块注释的格式。/*-在块注释的开头使用(注意连字符),如果格式化文件的其余部分,则格式不会受到影响。

/ *-
 *这是一个带有一些非常特殊的注释
 *我希望缩进(1)忽略的格式。
 *
 *一
 *两个
 *三
 * /

来源:http : //www.oracle.com/technetwork/java/javase/documentation/codeconventions-141999.html#350


从来没有见过,甚至没有上下文。+1!
流行

16
可悲的是,这仅适用于“常规”块注释,而不适用于Javadoc注释。
2012年

适合版本:Juno Service Release1。谢谢,我的救星!
2013年

1
甚至当您有自己的格式化程序(在每行开头都添加星号)并且您不希望默认格式化程序执行此操作时,这也很有用,您可以使用/ *
-......

仍然可以在2020年使用(版本:2020-06(4.16.0)):-)非常好
rustyx

25

我刚刚从一位同事那里了解到Eclipse提供了可用于此目的的特殊格式标记:

// @formatter:off
/*
 * ╔════════╦═══════╦══════════╗
 * ║ Month  ║ Sales ║ Position ║
 * ╠════════╬═══════╬══════════╣
 * ║ June   ║ 44k   ║ 2nd      ║
 * ║ July   ║ 39k   ║ 2nd      ║
 * ║ August ║ 49k   ║ 4th      ║
 * ╚════════╩═══════╩══════════╝
 *
 * This comment shouldn't be formatted, and will now be ignored by the formatter.
 */
// @formatter:on

请注意,您可能需要通过“首选项”菜单→Java>代码样式>格式器,单击“编辑”,选择“关闭/打开标签”选项卡,然后选中“启用关闭/打开标签)”来手动启用此功能。

对字符串@formatter:off的快速Google搜索使我想到了另一个SO答案,它在禁用代码块格式化程序的上下文中提到了此功能。我已经确认它适用于行注释,“常规”块注释和Javadoc块注释。


您如何使其适用于JavaDoc注释?我发现我必须在JavaDoc注释之前和之后添加行注释,才能使其正常工作,就像您为该答案中的块注释所做的那样。我希望我可以仅对JavaDoc注释的一部分关闭格式。
Michael Scheper

@MichaelScheper已经有一段时间了,我不记得了……您是否尝试过VonC的建议
2013年

这非常好,因为它告诉Eclipse也不要格式化代码。当您想要保留自己的格式时很有用。
Martin Wickman 2014年

18

另一种可能性是在Javadoc中使用HTML的<pre>:

/**
 * <pre>
 *    this
 *   is
 *      kept
 *  as
 *    is
 * </pre>
 */

至少这就是我倾向于将ASCII艺术嵌入到源代码注释中的方式:)


1
请注意,如果Eclipse将<pre> </ pre>标记的内容视为Java代码,则它将对其进行格式化(除非您取消选中Window-> Preferences-> Java-> Code Style-> Formatter-> Edit ... [Button] ]->注释[Tab]->“在'pre'标签内格式化Java代码段”)
gswierczynski 2014年


2

在Eclipse 3.4:“偏好设置”中,单击Java->代码样式->格式化程序,然后编辑配置文件,注释选项卡。那里有很多用于控制注释格式的选项。


1

如果要抑制eclipse中的格式,则始终可以将旨在避免被格式化的内容包装到<pre>UNFORMATTED CONTENT</pre>标记中。Javadoc格式化程序将检测到该标签,并使该标签之间的所有内容保持未格式化状态。

优点:

  • 其余的Javadoc仍被格式化
  • 由于前置标记,Javadoc的html输出也将“未格式化”

缺点:

  • 没有看到一个

1

一种解决方法是为您不希望Eclipse格式化的注释添加标记

/**
 * <pre>
 *    this part
 *   is
 *      out of
 *  format
 *    
 * </pre>
 */

2
是的...但是我不认为这会增加菲利普或托马斯·凯勒几年前在回答中所说的内容。
流行

1

试试这个。这对我有用。使用Java格式化程序(Windows>首选项> Java>代码样式>格式化程序),可以从现有的格式化程序配置文件创建一个新的格式化程序配置文件,然后对其进行编辑。

如果Eclipse不允许保存它,则创建一个新文件并保存。 在此处输入图片说明


这就是最近的Eclipse的答案:您现在可以禁用任何注释格式(javadoc,block或inline)。
特里斯坦,

0

它取决于语言。

例如,如果使用javascript,则应转到“窗口->首选项-> Javascript->代码样式->格式化程序”,然后编辑格式化程序选项。

编辑(反映OP问题中的更改

要编辑Java代码格式,请转到“窗口->首选项-> Java->代码样式->格式化程序”

在面板顶部,您将看到

活动配置文件:
Eclipse [内置]

从那里有一个右边的按钮,“编辑”,以及下面的两个按钮,“新建...”和“导入...”。我建议编辑现有的配置文件。

在编辑配置文件对话框中,顶部有一系列选项卡。最后一个标签是“评论”。要完全禁用注释格式,请取消选中“启用Javadoc注释格式”,“启用块注释格式”,“启用行注释格式”和“启用标题注释格式”。


0

您可以在Windows-首选项-Java-代码样式-格式器中进行更改,而不是单击“编辑..”按钮,找到“注释”,然后选择“从不合并行”。

然后,应该没问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.