2012-10-12 13 views
9

Có api để truy cập theo chương trình vào Java documentation không? Một cái gì đó tương tự như những gì biên tập viên/IDE như Eclipse làm cho IntelliSense. Chắc chắn, javadoc tạo ra html có thể được phân tích cú pháp và lập chỉ mục, nhưng sẽ là tuyệt vời để biết nếu một cái gì đó đã tồn tại như một gói độc lập.Truy cập có lập trình vào tài liệu Java

Cập nhật: Để rõ ràng, tôi đang cố gắng truy cập vào tài liệu để thực hiện ngôn ngữ java. Tuy nhiên, không có cách nào dễ dàng, nhưng bạn phải lấy openjdk từ trang web của Oracle và sau đó thực hiện make docs và cung cấp một số doclet để có được kết quả đầu ra ở dạng không phải html. Đây là những gì tôi đã cố gắng tránh ngay từ đầu. Vì vậy, tôi đang đọc tất cả các Makefiles bây giờ cố gắng tìm ra lý do tại sao $ PLATFORM không được giải quyết và việc xây dựng nguồn không thành công!

Điều cuối cùng tôi đã giải quyết với:

Cạo tài liệu html. Vâng. Nhận ra rằng tôi sẽ hoàn thành công việc của mình.

import urllib2 
import pymongo 

mongo = pymongo.Connection('localhost') 
mongo_db = mongo['api_db'] 
mongo_collection = mongo_db['api_collection'] 

URL='''http://docs.oracle.com/javase/6/docs/api/index-files/index-''' 
URL_range = 27+1 

def getPageElements(url): 
    content=urllib2.urlopen(url).read() 
    from BeautifulSoup import BeautifulSoup 
    soup = BeautifulSoup(content) 
    elements = soup('dl') 
    return elements 


def savePageElements(elements): 
    for i in elements[0]: 
      try: 
        entry={'type_description':str(i.findNext('dt')).split('-')[1].split('<')[0]\ 
            +i.findNext('a').findNext('a').renderContents(),\ 
            'signature':i.findNext('a').findNext('a').renderContents()+i.findNext('b').renderContents(),\ 
            'description': i.findNext('dd').renderContents()\ 
          } 
        print entry 
        insert_id = mongo_collection.save(entry) 
      except: 
        pass 


def retrieve(str): 
    mongo_documents = mongo_collection.find({ 
    'signature': str, 
    #'type_description':"Method of java.io.PrintStream" 
    }) 
    for this_document in mongo_documents: 
     print this_document 


if __name__=="__main__": 
    for i in range(1,URL_range): 
      #url=URL+str(i)+".html" 
      #print "Processing:", url 
      #elements=getPageElements(url) 
      #print elements[0] 
      #savePageElements(elements) 
      retrieve("println(String)") 

Nhưng hãy xem dexy. Nếu tôi có thể quản lý để xây dựng OpenJDK trên Ubuntu mà không có vấn đề - nó sẽ tạo ra JSON tốt đẹp để chơi với.

+0

Vì mục đích gì? – MadProgrammer

+0

Để xây dựng một nguyên mẫu nghiên cứu cho "vị trí tính năng" và "tracebility" giữa mã và tài liệu. – Tathagata

+0

Có cần phiên bản cụ thể không? tức là Java 7, Java 6? Hoặc bạn sẽ cần phải có khả năng theo dõi giữa – MadProgrammer

Trả lời

2

Khi bạn viết Eclipse thực hiện phân tích cú pháp javadoc và thực hiện công việc khá tốt của nó. Có vẻ như nó đã được giới thiệu trong 3.2M4. Bạn có thể trích xuất chức năng từ các nguồn Eclipse, kiểm tra với cộng đồng Eclipse cho điểm vào có thể là một nơi tốt để bắt đầu.

Nếu điều đó không hiệu quả, tôi đoán điểm xuất phát của bạn sẽ là một trình phân tích cú pháp HTML vanilla đơn giản.

0
  • Bạn có thể sử dụng đầu ra của công cụ JavaDoc và phân tích cú pháp dưới dạng XML là in this example.
  • Bạn cũng có thể sử dụng các công cụ trích xuất tài liệu khác như Doxygen và phân tích cú pháp đầu ra XML (tốt hơn) của chúng.
  • Khi bạn có kiến ​​thức về phân tích cú pháp cơ bản, bạn có thể tự viết một trình trích xuất JavaDoc. Có rất nhiều trình phân tích cú pháp Java miễn phí là một điểm khởi đầu tốt. (Tôi nghĩ rằng đây sẽ là cách tốt nhất cho nguyên mẫu nghiên cứu của bạn).
1

Công cụ javadoc phân tích thông tin ra khỏi tệp Java của bạn và ủy quyền cho doclet để dịch thông tin có cấu trúc này thành tài liệu. Doclet chuẩn tạo ra đầu ra HTML quen thuộc nhưng bạn có thể write your own và yêu cầu javadoc sử dụng nó thay thế. Đây có lẽ là tùy chọn mạnh mẽ nhất nếu bạn có sẵn mã nguồn ban đầu.