javadoc的语法高亮显示?

Posted

技术标签:

【中文标题】javadoc的语法高亮显示?【英文标题】:syntax highlighting for javadoc? 【发布时间】:2010-11-26 08:53:59 【问题描述】:

目前我在我的 javadoc 中使用 PRE 标记格式化代码示例,例如:

/**
 * Example javadoc
 * 
<pre>
String foo = "bar";
</pre>
 *
 * @return   true if the operation completed
 */

但这在生成的 javadoc 中显得相当单调乏味,我更希望有一些类似于 SyntaxHighlighter 的语法突出显示。

如何做到这一点?

【问题讨论】:

【参考方案1】:

这里的其他答案都有效,但会引入额外的依赖项或增加额外的构建复杂性。如果您使用 Maven 生成文档,并希望以最简单的方式使其在没有额外文件或依赖项的情况下工作,请添加到 maven-javadoc-plugin 配置:

<additionalOptions>-html5 --allow-script-in-comments</additionalOptions>
<header><![CDATA[
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/vs.min.css">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
    <script type="text/javascript">hljs.initHighlightingOnLoad();</script>
]]></header>

完整的插件配置如下所示:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>3.0.1</version>
    <configuration>
        <additionalOptions>-html5 --allow-script-in-comments</additionalOptions>
        <nohelp>true</nohelp>
        <show>private</show>
        <header><![CDATA[
            <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/vs.min.css">
            <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
            <script type="text/javascript">hljs.initHighlightingOnLoad();</script>
        ]]></header>
    </configuration>
    <executions>
        <execution>
            <id>attach-javadocs</id>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Pick your theme from here 并将上面的“vs”替换为您喜欢的主题(所有小写字母,单词之间带有破折号,例如mono-blue;如果您想要的主题不起作用,您可以查看here获取可用文件列表)。

然后像这样写你的例子:

 /**
  * Does something cool.
  * <pre><code class="java">@code
      // some example code here
      int x = 5;
  * </code></pre>
  */

https://burningmime.gitlab.io/setmatch/javadoc/com/burningmime/setmatch/RuleDB.html

编辑:您实际上并不需要 &lt;pre&gt;&lt;code class="java"&gt; 中的课程。您可以修改该 javascript 位,以便根本不需要更改源文件,并且 @code 部分中的任何内容都将突出显示,因为 Javadoc 已经添加了 &lt;code&gt; 标记。我不知道足够多的 JavaScript 来做到这一点,但应该不会太难。该解决方案可能是所有解决方案中侵入性最小的,因为它只是构建配置中的几行代码。

我正在标记这个社区 wiki,所以如果有人想加入并添加它,请这样做。

【讨论】:

【参考方案2】:

另一种选择是使用pegdown-doclet,它允许您使用 Github 风格的防护代码块。

```java
public static class Example 
```

【讨论】:

【参考方案3】:

发现这个问题正在寻找其他东西。在此期间,我编写了一个工具,将 gist 示例嵌入到 JavaDoc 中:https://www.codenameone.com/blog/javadoc-source-samples-that-dont-suck.html

您可以在我们的代码中看到这一点,例如: https://www.codenameone.com/javadoc/com/codename1/components/MediaPlayer.html

https://www.codenameone.com/javadoc/com/codename1/ui/package-summary.html

【讨论】:

【参考方案4】:

迟到总比没有好。

我的这个answer 解释了——尽管它的标题——如何使用 SyntaxHighlighter 作为 OP 请求向您的 Javadocs 添加语法突出显示功能。

答案假设您使用的是Maven,但它的好处是所有您的项目将自动继承在Javadoc 中进行语法高亮显示的能力。您将不必为每个项目都这样做。有了这个秘籍,您无需在每个项目中执行任何操作即可拥有该功能。

此外,如果您想要进行样式自定义(即您的 Javadoc 的外观),这与您将使用的机制相同。

【讨论】:

【参考方案5】:

您可以使用jQuery 使用beautyOfCode 插件来完成它。我不确定是否有一种简单的方法可以连接到 javadoc 生成,但事后您可以在标题中执行以下操作:

$(function()  
    $("pre").beautifyCode('java');  
);

PRE 标记中的所有文本都将突出显示为 java.lang.查看上面的链接了解更多信息。

【讨论】:

以上是关于javadoc的语法高亮显示?的主要内容,如果未能解决你的问题,请参考以下文章

扩展的 BNF 语法高亮显示 [关闭]

Xcode 中的 Python 语法高亮显示

Visual Studio 2015 的 CMake 语法高亮显示?

WebStorm 中的 Velocity 语法高亮显示

Objective C 的 Javascript 语法高亮显示

html 中 Java 代码的语法高亮显示