Tôi đang viết a library chèn đã được kiểm tra đơn vị mã ví dụ (mã nguồn, đầu ra và bất kỳ tệp đầu vào nào) vào JavaDoc, với nhiều khả năng tùy chỉnh. Cách chính của việc sử dụng thư viện này là với taglets inline, such asLàm cách nào để tạo thẻ nội tuyến (yêu cầu com.sun) nhiều nền tảng hơn? Có một trình phân tích cú pháp javadoc không phải của Oracle/nhiều nền tảng không?
{@.codelet.and.out my.package.AGreatExample}
{@.codelet my.package.AGreatExample}
{@.file.textlet examples\doc-files\an_input_file.txt}
{@.codelet.and.out my.package.AGreatExample%eliminateCommentBlocksAndPackageDecl()}
Kể từ khi tùy chỉnh taglets (và thậm chí doclets) yêu cầu com.sun
, điều này có nghĩa là họ gần như không đa nền tảng như Java chính nó. (Không chắc chắn nếu điều này có liên quan, nhưng từ "javadoc" - và thậm chí chuỗi con "doc" - không nằm trong số Java 8 Language Specifications.)
Tôi không thích ý tưởng viết một thư viện bị hạn chế cách này. Vậy tôi phải làm gì? Suy nghĩ của tôi cho đến thời điểm này là
- Để tận dụng lợi thế của trình phân tích cú pháp javadoc hiện tại, tôi gắn thẻ
com.sun
. Tuy nhiên, tôi thực hiện sự phụ thuộc này vàocom.sun
là "mỏng" như có thể. Tức là, tôi đặt ít mã trong lớp thẻ càng tốt, để lại phần lớn mã ở nơi khác, nơi không phụ thuộc vàocom.sun
. - Tôi làm việc hướng tới việc tạo trình phân tích cú pháp của riêng mình, chỉ chỉ tìm kiếm các thẻ tag cụ thể của tôi. Đây là một nỗi đau, nhưng không quá khủng khiếp. Bạn lặp qua các dòng của mỗi tệp nguồn Java, tìm kiếm
\{@\.myTagletName (.*?)\}
. Khi bạn nắm bắt được văn bản đó, nó khá giống với mã trong thẻ tagcom.sun
. - Trình phân tích cú pháp này sẽ phải chạy trước khi thực thi javadoc và do đó sẽ yêu cầu cấu trúc thư mục trùng lặp. (1) mã ban đầu của bạn, với các thẻ tùy chỉnh chưa được phân tích, (2) bản sao của mã đó, với đầu ra được phân tích cú pháp. Tôi muốn sao chép tất cả tất cả mã vào thư mục trùng lặp và sau đó phân tích cú pháp chỉ những tệp Java được biết có các thẻ này (các lớp được "đăng ký" theo cách nào đó với trình phân tích cú pháp).
Đây có phải là phương pháp hợp lý không? Có một trình phân tích cú pháp javadoc/taglet đa nền tảng khác đã tồn tại ở đó chưa, vì vậy tôi không phải cuộn của riêng mình? Có bất kỳ nội dung nào có nền tảng chéo là như đã tồn tại ở đó không? Là JavaDoc chính nó không phải là nền tảng chéo hay chỉ là các thẻ và tài liệu tùy chỉnh?
Tôi muốn có một viễn cảnh thô bạo về việc có bao nhiêu người bị khóa khỏi thư viện của tôi vì quyết định này (để sử dụng thẻ nội tuyến), nhưng chủ yếu là tôi đang tìm kiếm giải pháp lâu dài.
(Mặc dù liên kết của tôi Java 8 ở trên, tôi đang sử dụng Java 7.)
tín dụng để @fge cho đề nghị taglet, nhiều thanh lịch hơn original idea của tôi, và để @ Michael cho đáng ngại nhưng hữu ích com.sun
cảnh báo.
Nếu bạn quan tâm, tôi hiện đã hoàn thành thư viện này. Nó được gọi là 'Codelet': http://codelet.aliteralmind.com và https://github.com/aliteralmind/codelet. – aliteralmind