Javadoc: ngắt dòng không có thẻ HTML?


81

Xin lỗi vì một dạng câu hỏi thường gặp có thể xảy ra, nhưng tôi không thể tìm thấy câu trả lời.

Theo như tôi nhớ về Eclipse, một dòng trống trong nhận xét Javadoc được hiển thị (trong cửa sổ bật lên Javadoc trong nguồn) dưới dạng ngắt dòng (có thêm khoảng cách dọc).

Trong Netbeans, tuy nhiên, đây không phải là trường hợp.

Tôi có thể định cấu hình Javadoc để diễn giải một dòng trống là ngắt dòng không?

Câu hỏi bổ sung: Tôi có thể ghi đè hành vi Netbeans mặc định (liên quan đến điều này) cho các cửa sổ bật lên Javadoc trong nguồn không?

Những gì tôi đang nói đến là:

Nguồn

/**
 * Paragraph One
 *
 * Paragraph Two
 */
 void someMethod() { }

Diễn giải nhật thực

 Paragraph One

 Paragraph Two

Diễn giải Netbeans

 Paragraph One Paragraph Two

1
Nhiều câu trả lời trong số này hiện đã lỗi thời (được thay thế) bởi NetBeans8.2, hãy xem câu trả lời từ @fujy bên dưới, nó hoạt động hoàn hảo.
Webel IT Australia - upvoter

Câu trả lời:


80

Nó không liên quan gì đến Netbeans. Tôi nghi ngờ bạn đang xem mã nguồn trong một trường hợp và đầu ra của Javadoc trong trường hợp kia. Dòng mới là không đáng kể trong HTML: vậy thì đầu ra sẽ không hiển thị chúng. Nếu bạn muốn một dòng mới, hãy sử dụng a <p>hoặc a <br>.


4
Như tôi đã đề cập trong câu hỏi, Eclipse không xem xét các dòng trống như đoạn văn. Vì vậy, giả định của tôi là thể đạt được điều này bằng một số cấu hình javadoc (Netbeans hoặc không).
java.is.for.desktop

Eclipse hiển thị cho bạn mã nguồn tuy nhiên nó được định dạng. Netbeans 6.9.1 cũng hiển thị cho bạn mã nguồn, ditto, tức là nó cũng không bỏ qua các ngắt dòng. Tuy nhiên, nếu bạn đang xem đầu ra của Javadoc bằng bất kỳ phương tiện nào nếu không chính xác thì điều đó có nghĩa là đừng bỏ qua dấu ngắt dòng.
user207421

40

Tôi không chắc liệu điều này có giúp ích cho trường hợp của OP hay không, tuy nhiên tôi đã đặt <pre></pre>xung quanh tài liệu của mình để netbean không làm sai lệch định dạng của tôi. Vì vậy, nó sẽ giống như

/**
 * <pre>
 * Paragraph One
 *
 * Paragraph Two
 * </pre>
 */

Đây là gần nhất tôi có được để hiển thị các dòng mới ở định dạng văn bản. Tôi đang sử dụng NetBeans 7.1.2. Cách sử dụng code formattùy chọn này sẽ không định dạng lại tài liệu. Hiển thị tài liệu trong gợi ý vẫn được định dạng.

Cập nhật: trong Netbeans 8.x có một tùy chọn trong định dạng mã để tắt nhận xét định dạng.


13

Đã có một tùy chọn trong NetBeans- được thử nghiệm trên phiên bản 8.2 - cho phép bạn giữ lại các dòng mới trong nhận xét của mình và / hoặc thêm <p>thẻ vào của bạn Javadocnếu cần

  • Chỉ từ Toolsmenu, đã chọnOptions
  • Chuyển đến Editortab, sau đó chuyển sang Formattingtab
  • Trong Languagemenu đã chọn Javavà trong Categorymenu đã chọnComments
  • Chọn Preserve New Lineshộp kiểm trong Generalphần nếu bạn muốn giữ lại các dòng mới trong nhận xét của mình. Điều này sẽ giữ nguyên các dòng mới mà không cần thêm <p>thẻ
  • Chọn Generate "<p>" on Blank Lineshộp kiểm trong Javadocphần nếu bạn cũng muốn thêm <p>thẻ .

nhập mô tả hình ảnh ở đây


2
Chắc chắn là câu trả lời tốt nhất wrt NetBeans 8.2. Dễ dàng. Nhưng bạn nên chỉnh sửa nó để thêm rằng nó chỉ thực sự hoạt động khi bạn thực hiện Định dạng trên mã (với các ngắt dòng hiện có). Người ta phải cẩn thận, nếu đã có một số <p>trong đó bằng tay, đôi khi nó có thể tăng gấp đôi <p>``<p>lần đầu tiên. Sau đó nó hoạt động như mong đợi.
Webel IT Australia - upvoter

4

Tôi đồng ý với bạn, HTML không thuộc mã nguồn. Rất tiếc, tôi không tìm thấy Google trợ giúp nhiều cho việc này. Nó thực sự khá dễ thực hiện.

Đây là Doclet tùy chỉnh mà bạn có thể biên dịch và sử dụng:

import com.sun.javadoc.*;
import com.sun.tools.doclets.standard.*;

/**
 * Formats text-only comments with HTML.
 */
@SuppressWarnings("restriction")
public final class TextDoclet {
    private static final Pattern NEWLINE_REGEX = Pattern.compile("\\n");
    private static final String BR = "<br/>\n";

    public static boolean start(RootDoc rootDoc) {
        for ( ClassDoc classdoc : rootDoc.classes())
            classdoc.setRawCommentText(formatText(classdoc.getRawCommentText()));

        return Standard.start(rootDoc);     
    }

    private static String formatText(String text) {
        return NEWLINE_REGEX.matcher(text).replaceAll(BR);
    }
}

Một ví dụ về cách gọi nó bằng javadoc:

javadoc -docletpath ~/project/text-doclet/target/text-doclet-1.0.0-SNAPSHOT.jar -doclet com.myorg.textdoclet.TextDoclet -sourcepath ~/project/myapp/src/main/java -subpackages com.myorg.myapp

2

JavaDoc hiển thị cách các kiểu CSS đã được xác định. Bạn có thể chỉnh sửa các kiểu CSS được liên kết với các thẻ đoạn để làm điều này:

p {
    line-height: 25px;
}

1
Cảm ơn bạn, nhưng tôi chắc chắn rằng Netbeans hoàn toàn không diễn giải một dòng trống thành một đoạn văn (xem "Diễn giải Netbeans" trong câu hỏi của tôi). Ý tôi là: bạn chỉ có thể xác định khoảng cách dòng nếu bạn có dòng.
java.is.for.desktop

Hừ! Tôi đã thấy điều đó. Nhưng không thực sự chắc chắn nếu Netbeans cung cấp một tùy chọn để chỉnh sửa điều này.
adarshr

2

Đây là một giải pháp giả
(đáng buồn là chỉ ảnh hưởng đến javadoc được tạo, nhưng không ảnh hưởng đến hiển thị javadoc trong nguồn của Netbeans).

Chỉ định một biểu định kiểu có chứa thông tin sau:

div.block {
    white-space: pre;
}

0

Tôi không biết Eclipse đang làm gì ở đây, nhưng nếu bạn muốn hành vi này nói chung (không chỉ IDE), bạn có thể phải tạo một Tài liệu mới (có thể dựa trên tài liệu HTML mặc định) để thay thế, có chèn <p>tại mỗi dòng trống hoặc tương tự.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.