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

时间:2009-06-21 22:25:33

标签: eclipse comments formatter

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

11 个答案:

答案 0 :(得分:171)

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

/*-
 * Here is a block comment with some very special
 * formatting that I want indent(1) to ignore.
 *
 *    one
 *        two
 *            three
 */

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

答案 1 :(得分:35)

2010年更新,pointed by the OPin this answer,Eclipse 3.6中的特殊字符串// @formatter:off就足够了。

在提问时

It was not available


原始答案: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 lines”部分中的“General 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 tags <dl>, <dt> and <dd>将有助于在Javadoc视图中正确显示它。

答案 2 :(得分:23)

我刚从一位同事那里了解到,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&gt;手动启用此功能。代码风格&gt;格式化程序,点击修改,选择关/开标记标签,然后选中启用关/开标记source)。< / p>

字符串 @formatter:off 的快速Google将我带到了this other SO answer,它在禁用代码块格式化程序的上下文中提到了此功能。我已经确认它适用于行注释,“正常”块注释和Javadoc块注释。

答案 3 :(得分:15)

另一种可能性是使用HTML的&lt; pre&gt;在Javadoc:

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

至少这是我倾向于在源代码注释中嵌入我的ASCII艺术:)

答案 4 :(得分:8)

使用<pre> </pre>标记围绕特定文字。

答案 5 :(得分:2)

在Eclipse 3.4:Preferences,Java-&gt; Code Style-&gt; Formatter中,然后编辑profile,comments选项卡。那里有一堆用于控制评论格式的选项。

答案 6 :(得分:1)

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

优点:

  • 其余的Javadoc仍然是格式化的
  • Javadoc的html输出将是&#34; unformatted&#34;以及因为预标签

缺点:

  • 没看到一个

答案 7 :(得分:1)

一种解决方法是为您不希望eclipse格式化的评论添加 pre 标记

namespace SoftUni
{
    using System;
    using System.Linq;
    using System.Collections.Generic;

    public class PhoenixOscarRomeoNovember
    {
        public static void Main()
        {
            var squadInfo = new Dictionary<string, HashSet<string>>();

            while (true)
            {
                var input = Console.ReadLine();
                if (input == "Blaze it!") break;

                var tokens = input
                    .Split(new string[] {" -> "}, StringSplitOptions.RemoveEmptyEntries);

                var creature = tokens[0];
                var squadMate = tokens[1];

                if (creature == squadMate)
                {
                    continue;
                }

                if (squadInfo.ContainsKey(creature))
                {
                    if (squadInfo[creature].Contains(squadMate))
                    {
                        continue;
                    }

                    squadInfo[creature].Add(squadMate);
                }
                else
                {
                    squadInfo.Add(creature, new HashSet<string>() { squadMate });
                }
            }

            foreach (var curr in squadInfo.Keys)
            {
                foreach (var creature in squadInfo.Keys)
                {
                    if (squadInfo[curr].Contains(creature)
                        && squadInfo[creature].Contains(curr))
                    {
                        squadInfo[curr].Remove(creature);
                        squadInfo[creature].Remove(curr);
                    }
                }
            }

            foreach (var creature in squadInfo.OrderByDescending(b => b.Value.Count))
            {
                Console.WriteLine($"{creature.Key} : {creature.Value.Count}");
            }
        }
    }
}

答案 8 :(得分:0)

它依赖于语言。

例如,如果使用javascript,您可以转到“Window - &gt; Preferences - &gt; Javascript - &gt; Code Style - &gt; Formatter”,然后编辑格式化程序选项。

修改(反映OP问题的变化

要编辑java代码格式,请转到 “Window - &gt; Preferences - &gt; Java - &gt; Code Style - &gt; Formatter”

在面板的顶部,您将看到

  

活动资料:
  Eclipse [内置]

从那里你有一个按钮在右边,“编辑”,两个在下面,“新...”和“导入...”。 我建议编辑现有的个人资料。

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

答案 9 :(得分:0)

您可以在 Windows-首选项-Java-代码样式-格式化程序, 而不是单击“编辑..”按钮,找到“注释”, 选择“从不加入行”。

然后就可以了。

答案 10 :(得分:0)

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

如果Eclipse不允许保存它,则创建一个新文件并保存在其中。 enter image description here