【问题标题】:Disabling Eclipse code formatting for part of a javadoc禁用部分 javadoc 的 Eclipse 代码格式
【发布时间】:2012-08-14 15:51:02
【问题描述】:

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

虽然这种行为可能存在问题,但我使用的框架(WEKA 机器学习库)需要这种信息重复。我希望 Eclipse 的代码格式化程序不要干扰生成的 cmets。我正在使用 Eclipse Indigo 版本。

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

是否有在 javadoc cmets 中切换代码格式的解决方法?

【问题讨论】:

    标签: eclipse code-generation javadoc weka eclipse-jdt


    【解决方案1】:

    您可以禁用标头的格式设置,但我认为您不能有选择地禁用非标头 javadoc cmets 的格式设置。

    【讨论】:

    • 自从我问这个问题以来已经过去了很长时间。无论如何,我接受这个答案,因为事实上,它是完全正确的。
    • 同样,根据经验测试,您不能选择性地禁用非标题块 cmets 的格式化,例如:/* comment */
    • This answer 通过包含 html 标签来解释解决方法。
    【解决方案2】:

    自从有人问/回答这个问题以来已经有一段时间了,并帮助我完善了以下答案,希望另外有用。我使用这种替代方法是因为我想在 Javadocs 中运行 Javascript。

    Eclipse 提供了@formatter:off 和@formatter:on 需要通过Windows->Preferences->java->code style->formatter:::edit button::: tab "off/on tags" 启用. 它们可用于任何 cmets。

    关于文档的东西

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

    但是当您希望在 javadoc 中关闭格式化程序时,请使用 @formatter:xxx 内的 html cmets <!-- xxxxx --> 表明你是什么 正在努力做。使用<code>...</code> 块确保没有格式化和 将代码包含为 javascript。

    编辑了示例中的代码语句,因为我希望它可以在 eclipse 上工作 和网豆。我找到了格式化程序:下班,但后来停止了不同的工作 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
    • 从那时到 2018 年之间,自动格式化程序是通过使用 autoformat:off 而不是 formatter:off (及以上)来控制的,但原理仍然有效。我最初的想法是输入 &lt;span style="display: none;"&gt; 或其他东西来阻止自动格式化指令出现在 javadoc 中,但当然 HTML 注释的想法要好得多,所以谢谢 :-)
    • '@formatter:off' 和 '@formatter:on' 在 Eclipse 2019-03 中为我在 javadoc cmets 中开箱即用
    【解决方案3】:

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

    这个想法是避免在开/关标签中使用@

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

    【讨论】:

      猜你喜欢
      • 2019-02-24
      • 2021-10-14
      • 2021-03-26
      • 2014-12-11
      • 2019-01-13
      • 2016-01-22
      • 1970-01-01
      • 2017-02-16
      相关资源
      最近更新 更多