2012-10-12 206 views
9

¿Existe una API para acceder mediante programación al Java documentation? Algo similar a lo que editores/IDE como Eclipse hacen para IntelliSense. Seguramente, el html generado por javadoc se puede analizar e indexar, pero sería genial saber si algo ya existe como un paquete independiente.Acceso programático a la documentación de Java

Actualización: Para ser claro, estoy tratando de obtener un acceso programático a la documentación para la implementación del lenguaje Java. Sin embargo, no hay una salida fácil, pero tiene que obtener el openjdk del sitio de Oracle y luego hacer make docs y suministrar algún doclet para obtener el resultado en forma no-html. Esto es lo que estaba tratando de evitar desde el principio. ¡Así que estoy leyendo todos los Makefiles ahora tratando de descubrir por qué $ PLATFORM no se está resolviendo y la creación de fuentes está fallando!

Lo que finalmente se estableció con:

con cucharones documentos html. Sí. Me di cuenta de que terminaría mi trabajo.

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)") 

Pero eche un vistazo a dexy. Si hubiera podido construir OpenJDK en Ubuntu sin problemas, habría generado un buen JSON para jugar.

+0

¿Para qué? – MadProgrammer

+0

Para construir un prototipo de investigación para "ubicación de características" y "trazabilidad" entre el código y la documentación. – Tathagata

+0

¿Necesitaría una versión específica? es decir, Java 7, Java 6? ¿O necesitaría poder rastrear entre – MadProgrammer

Respuesta

2

Al escribir Eclipse analiza el javadoc y lo hace muy bien. Parece que se introdujo en 3.2M4. Es posible que pueda extraer la funcionalidad de las fuentes de Eclipse; consultar con la comunidad de Eclipse para conocer el punto de entrada puede ser un buen lugar para comenzar.

Si eso no funciona, supongo que su punto de partida sería un analizador de HTML sin formato.

0
  • Puede usar el resultado de la herramienta JavaDoc y analizarlo como XML como in this example.
  • También puede usar otras herramientas de extracción de documentación como Doxygen y analizar su (mejor) salida XML.
  • Cuando tiene conocimiento básico del analizador, puede escribir un JavaDoc-extractor por su cuenta. Hay muchos analizadores de Java gratuitos que son un buen punto de partida. (Creo que esta será la mejor manera para su prototipo de investigación).
1

La herramienta javadoc procesa la información de los archivos de Java y los delegados a un doclettraducir esta información estructurada en la documentación. El doclet estándar produce el resultado HTML familiar, pero puede write your own y decirle a javadoc que lo use en su lugar. Esta es probablemente la opción más sólida si tiene el código fuente original disponible.

Cuestiones relacionadas