禁用Eclipse代码格式化的部分Javadoc

12

我有一个Java类,其中的部分javadoc实际上是作为构建过程的一部分生成的:一个方法的返回值(一个静态字符串值)被插入到源文件中,就像某些版本控制软件中的 $Revision: $ 标签一样。

虽然这种行为可能值得怀疑,但我使用的框架(WEKA机器学习库)需要这种信息重复。我希望Eclipse的代码格式化程序不会干扰生成的注释。我使用的是Eclipse Indigo版本。

我可以使用特殊注释 //@formatter:on//@formatter:off 来开关格式化程序。然而,@formatter 标签仅在“普通”注释中起作用,而不是在javadoc注释中。显然,它们很容易被混淆为javadoc标签。这意味着我不能关闭格式化程序(例如自动换行),使其对注释的生成部分保持打开状态,并保持其余部分关闭,因为必须在javadoc注释周围放置 @formatter 指令。

是否有解决方法可以在javadoc注释中切换代码格式化?

3个回答

12

这个问题已经有一段时间没有被问答了,我希望下面的回答可以帮助你。我使用了这个替代方案,因为我想在Javadocs中运行JavaScript。

Eclipse提供了@formatter:off和@formatter:on,需要通过Windows->Preferences->java->code style->formatter:::edit按钮:::选项卡“off/on标记”启用。 它们可以在任何注释中使用。

关于文档内容

// @formatter:off
/**
* javadoc
*/ 
// @formatter:on

但是,当您想要在javadoc中关闭格式化程序时,请使用@formatter:xxx在html注释<!-- xxxxx -->中指示您要执行的操作。使用<code>...</code>块确保没有格式和代码的包含,如JavaScript。

修改示例中的代码语句,因为我希望它可以在Eclipse和NetBeans上运行。我发现formatter:off可以工作,但在不同版本的Eclipse上停止工作(是的,我使用多个IDE版本)。

/** 
* <br><!-- @formatter:off -->
* <code>
* <script type="text/javascript">
* // hash structure for holding variable as name and its text
* var hashText = {};
*  
* // function causes a hyper-link to be created
* function insertLink(varName, text){
*    var link22;
*  
*    hashText[varName] = text;
*  
*    link22 = '<a href="./ConsoleCapture.html#' + varName + '">' + hashText[varName] + '</a>';
*       
*    document.write(link22);
* }
* function insertLinkA(varName){
*    var link22;
*
*    link22 = '<a href="./ConsoleCapture.html#' + varName + '">' + hashText[varName] + '</a>';
*
*    document.write(link22);
* }
*      
* function setLinkPoint(varName, text){
*     hashText[varName] = text;
*      
*     document.write('<a id="' + varName + '"><U>' + hashText[varName] + '</U></a>');
* }
*      
* function setLinkPointA(varName){
*    document.write('<a id="' + varName + '"><U>' + hashText[varName] + '</U></a>');
* }
* </script>
* <code>
* <!-- @formatter:on -->
*
*
*/

谢谢。只有 [// @formatter:off] 语法对我有效。我正在使用 Eclipse STS 3.6.1.RELEASE。 - A. Masson
2
在2018年之前的某个时间点,自动格式化程序的控制使用autoformat:off而不是formatter:off(和on),但原则仍然适用。我最初的想法是插入一个<span style="display: none;">或类似的东西来阻止自动格式化指令出现在javadoc中,但当然HTML注释的想法更好,所以谢谢 :-) - Amos M. Carpenter
1
"@formatter:off"和"@formatter:on"在Eclipse 2019-03中对我来说在javadoc注释中可以直接使用。 - Deepak

1

您可以禁用标题的格式,但我不认为您可以选择性地禁用非标题javadoc注释的格式。


自从我提出这个问题已经过了相当长的时间。无论如何,我接受这个答案,因为事实上它是完全正确的。 - Kristóf Marussy
同样地,根据实证测试,您不能选择性地禁用非标题块注释的格式,例如: /* 注释 */ - Will
该回答通过包含HTML标签来解释一种解决方法。 - mtk

0

我遇到了同样的问题,将@formatter:off更改为FORMATTEROFF对我有用。

这个想法是避免在on/off标记中使用@

现在我可以在javadoc的一部分周围禁用格式化程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接