2009-06-01 9 views
6

Esta pregunta se refiere al uso de ASDoc para crear documentación de AS3. No estoy haciendo esto desde Flex ni nada, simplemente usando la línea de comando, y aunque todo funciona bien y ASDoc no devuelve ningún error, algunos de los enlaces en la documentación resultante están rotos.¿Reparar caminos rotos en ASDoc?

Específicamente, en todos los lugares donde hay enlaces a propiedades o métodos en otras partes de la documentación (incluso en la misma clase), el enlace termina doblando la carpeta correspondiente al paquete.

Por ejemplo, supongo que estoy documentando myPackage.MyClass. Si MyClass tiene una propiedad llamada MyProperty, y en alguna parte de mis documentos incluyo una línea como esta:

@see #MyProperty 

continuación, los documentos se analizan correctamente y el "Véase también:" vínculo se crea correctamente, pero termina señalando a

.../output_directory/myPackage/myPackage/MyClass.html#MyProperty 

donde, por supuesto, en el sistema de archivos real sólo hay una myPackage carpeta.

La parte pertinente de mi mando ASDoc se parece a esto:

asdoc 
-source-path . 
-doc-sources myPackage 
-output D:\dev\repository\docs\myPackage_docs 
-external-library-path "C:\Progra~1\Adobe\flex_sdk_3\frameworks\libs\player\10\playerglobal.swc" 

¿Estoy quizá falta algún argumento ASDoc que especifique la URL base para los enlaces, o algo por el estilo? Si esto fuera un error simple, sería evidente para muchos, pero no puedo encontrar ningún resultado en Google para el problema, por lo que mi hipótesis de trabajo es que no le sucede a las personas que ejecutan ASDoc desde Flex, tal vez debido a alguna configuración he omitido

¡Gracias por cualquier ayuda!


En la sugerencia de TypeOneError, probé diferentes tipos de enlaces @see. He descubierto que estos funcionan bien:

  • @see some.package
  • @see ClassName
  • @see ClassName#property

mientras estos no funcionan:

  • @see #property
  • @see full.package.ClassName
  • @see full.package.ClassName#property

¿Qué es un poco peor es, a pesar de todos los enlaces de navegación funcionan, el mismo camino duplicado se produce en los enlaces de tipo generados automáticamente. Por ejemplo, cuando muestra la firma de cada método, cuando el método devuelve una clase que está en la documentación, ese enlace se rompe.

También eché un vistazo al HTML, y encontré que el problema no parece ser con la URL base de la página ni nada, solo son enlaces inconsistentes. Por lo tanto, en una fila de enlaces @see consecutivos, algunos de ellos se vinculan al ClassName.html y algunos a package/ClassName.html, según las reglas que se muestran arriba. Todo esto, por cierto, es cierto independientemente de si las páginas se ven en marcos o no.

Más información si entiendo algo, pero las ideas para soluciones son bienvenidas.


Actualizar: algunos detalles más: no estoy seguro de mi versión exacta SDK, excepto que acompaña Flex 3, pero si me quedo sin argumentos ASDoc, informa: Adobe ASDoc Version 3.3.0 build 4852. Estoy ejecutando todo esto en Windows XP, desde un archivo por lotes ubicado en el directorio classpath.


solución parcial: todos menos uno de mis problemas se resolvieron mediante la actualización a la versión 4.0.0.7219 beta del SDK Flex 4 (y utilizando el ASDoc distribuido en el mismo). Ahora, todas mis etiquetas @see funcionan como se esperaba. El único problema restante es que, siempre que tengo un método que devuelve una clase que es parte de mi documentación, ASDoc simplemente destruye el enlace. Por ejemplo, si tengo un método cuya firma es ClassA#getB():ClassB, entonces cuando eso se muestra en los documentos, el texto "ClassB" se vincula con "packageName: ClassB.html" en lugar de "packageName/ClassB.html". Esto parece ser un error simple. Bleh.

Respuesta

1

ASDoc es frustrante hasta el infinito. ¿Ha tratado de forma explícita añadiendo el nombre completo del paquete/clase a la @see, es decir:

@see myPackage.myClass#MyProperty 

Para ver si eso hace la diferencia?

Editar

Me corrieron algunas pruebas en función de sus resultados y el marcador de propiedad interna está funcionando para mí. es decir,

@see #_dispatcher

Enlaces directamente a esa propiedad en la página (sin subcarpeta doble). Creo que tal vez necesites replantearte cómo estás ejecutando el comando. Por ejemplo, mi código base está configurado de esta manera:

/src 
    /com 
     /bkwld 
      /fetch 

que normalmente se ejecutan en el interior asdoc "src":

asdoc -source-path . -doc-classes com/bkwld/fetch/Fetch 

Probé todos estos en Fetch.as y que todo funcionaba como se esperaba:

* @see FetchItem 
* @see com.bkwld.utils.Logger 
* @see #_dispatcher 

en primer lugar me llevó a la página FetchItem, en segundo lugar me llevó a la página Logger en un paquete diferente, y en tercer lugar se levantó la página a los métodos protegidos de Fetch.

Solo por curiosidad ... ¿qué versión de la SDK estás usando?

+0

Hmm, sí marcó la diferencia ... Actualizaré con los resultados. – fenomas

+0

Agregó una prueba, FYI – typeoneerror

+0

Muchas gracias por la prueba mate, esto suena solucionable. Estoy llamando ASDoc de manera similar a usted: guardo el archivo por lotes en mi directorio classpath, en el mismo nivel que mi paquete superior ("com" en su ejemplo). Agregaré algunos detalles de la versión a mi pregunta también. No está utilizando FlexBuilder o Eclipse para ejecutar ASDoc, ¿verdad? – fenomas

0

supongo que el problema es su línea de

-doc-fuentes mypackage

Especificación ''. allí en lugar de 'myPackage' debería arreglarlo (así que hágalo idéntico a su ruta de origen)

+0

miedo no, esto sólo hace que trate de documentos todas las otras fuentes en esa carpeta, además de la que estoy tratando de documentar. Si muevo todas las otras fuentes en otro lugar, ASDoc se completa sin errores como antes, y el error no ha cambiado. – fenomas

+0

Hmm, no sé qué sugerir lo contrario. El uso de un nombre de paquete en -doc-sources definitivamente me parece incorrecto. –

+0

He intentado eliminar por completo la línea -doc-sources, e incluir clases a través de -doc-classes en su lugar ... como en, "-doc-classes packageName.ClassName". Sin embargo, no pareció tener ningún efecto en el error. ¿Sería esa una forma más normal de llamar a asdoc? – fenomas

0

He escrito una secuencia de comandos de Python simple que corrige las rutas incorrectamente generadas por asdoc en el caso mencionado anteriormente. A saber, si hay un método myMethod (v: MyClass, ...) asdoc genera incorrectamente el enlace href = "../ mypackage: Myclass " El script arreglará esto reemplazando el: por un/

Debería notar que los documentos que estoy generando tienen una estructura bastante" plana ", es decir, un paquete único con muchas clases. no tengo idea de si el arreglo trabaja con estructuras de documentación más complejas.

de todos modos, si alguien quiere probar el guión, me alegraré de enviarlo.