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

有没有办法让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。

使用Java格式化程序( Windows > Preferences > Java > Code Style > Formatter ),您可以创build一个新的格式程序configuration文件。

在评论标签(在eclipse3.5中),你可以确保在“ Javadoc comment settings ”中取消选中“ Format HTML tags ”。
检查“ General settings ”部分中的“ Never join lines ”。

那么你的评论应该写成:

 /** * 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部分有更多的格式参数可供使用。
如果它位于方法的前面(true J​​avadoc),那么HTML标记<dl><dt><dd>将有助于在Javadoc视图中正确显示它。

还有另外一个解决scheme可以用来抑制特定块注释的格式。 在块注释开始处使用/*- (注意连字符),如果格式化文件的其余部分,格式不会受到影响。

 / *  - 
  *这是一个非常特殊的块注释
  *格式,我想缩进(1)忽略。
  *
  *一个
  *两个
  *三
  * /

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

我刚刚从同事那里得知,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>代码样式>格式化程序手动启用此function,单击编辑 ,select关/开标签选项卡并选中启用关/开标签 ( 源 )。

对于string@formatter:off的快速Google将我带到了另一个SO回答中 ,该回答在禁用代码块格式化程序的环境中提到了此function。 我已经确认它适用于行注释,“正常”块注释和Javadoc块注释。

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

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

至less这是我倾向于将我的ASCII艺术embedded源代码注释:)

<pre> </pre>标签环绕特定文本。

在Eclipse 3.4:Preferences,Java-> Code Style-> Formatter中,然后编辑profile,comments标签。 有一些选项可以控制注释格式。

答案只在Eclipse中testing:

  • 接受的答案的问题(Java格式(Windows>首选项> Java>代码样式>格式化程序),您可以创build一个新的格式化程序configuration文件),您影响代码中的每个javadoc。 也许这是不可取的代码的其他部分必须格式化。
  • / *解决scheme的问题在于,它只适用于“常规”块注释,而不是Javadoc注释(正如Pops指出的那样)

我的build议只是简单地使用html标签。 例如,你可以在p标签中打包文本,以便在呈现的html中看到额外的换行符。 下面是你的例子看起来像(我添加了一些更多的文字和情况1使用p ):

 /** * PSEUDOCODE<br> * * Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy * eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam * voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet * clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit * amet. <br> * * Three cases are possible:<br> * * Case 1: foobar<br> * <p> * Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy * eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam * voluptua. At vero eos et accusam et justo duo dolores et ea rebum. * </p> * * Case 2: fred hacker do case 2 things<br> * * Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy * eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam * voluptua. At vero eos et accusam et justo duo dolores et ea rebum.<br> * */ 

如果你想在eclipse中禁止格式化,你总是可以把不想被expression的内容包装到<pre>UNFORMATTED CONTENT</pre>标签中。 Javadoc格式化程序将检测到该标记 ,并将该标记之间的所有内容保留为未格式化。

优点:

  • 其余的Javadoc仍然被格式化
  • 由于预标签,Javadoc的html输出也将是“无格式”

缺点:

  • 没有看到一个

这是语言依赖。

例如,如果使用JavaScript,您将转到“窗口 – >首选项 – > Javascript – >代码样式 – >格式化程序”,然后编辑格式化程序选项。

编辑 (反映OP问题的变化

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

在面板的顶部,你会看到

活动档案:
Eclipse [内置]

从那里你有一个button,右侧,“编辑”,下面两个,“新…”和“导入…”。 我会build议编辑现有的configuration文件。

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

一个解决方法是添加pre标签的意见,你不想eclipse格式

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