这个问题涉及使用ASDoc从AS3创建文档。我不是从Flex或其他任何东西,只是使用命令行,虽然一切正常,ASDoc没有返回任何错误,结果文档中的一些链接被打破。
具体而言,在文档其他部分(包括同一类)中有属性或方法链接的所有地方,链接最终会使与包对应的文件夹加倍。
例如,假设我正在记录myPackage.MyClass
。如果MyClass
有一个名为MyProperty
的属性,并且在我的文档的某处,我会包含这样一行:
@see #MyProperty
然后正确解析文档并正确创建“See also:”链接,但它最终指向
.../output_directory/myPackage/myPackage/MyClass.html#MyProperty
当然,在实际的文件系统中只有一个myPackage
文件夹。
我的ASDoc命令的相关部分如下所示:
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"
我是否可能遗漏了一些ASDoc参数,这些参数会指定链接的基本URL或沿着这些行的某些内容?如果这是一个普通的错误,对很多人来说很明显,但我找不到任何谷歌搜索结果,所以我的工作假设是,从Flex运行ASDoc的人不会发生这种情况,也许是因为我有些设置已经省略了。
感谢您的帮助!
根据TypeOneError的建议,我尝试了不同类型的@see链接。我发现这些工作正常:
@see some.package
@see ClassName
@see ClassName#property
虽然这些不起作用:
@see #property
@see full.package.ClassName
@see full.package.ClassName#property
更糟糕的是,尽管所有导航链接都有效,但在自动生成的类型链接中会出现相同的加倍路径。例如,在显示每个方法的签名的情况下,当方法返回文档中的类时,该链接就会被破坏。
我还看了一下HTML,发现问题似乎与页面的基本URL或其他任何内容不一致,只是链接不一致。因此,在一行连续的@see
个链接中,根据上面显示的规则,其中一些链接指向ClassName.html
,一些链接指向package/ClassName.html
。顺便说一下,无论页面是否以框架形式查看,所有这些都是正确的。
如果我发现任何问题,请提供更多信息,但欢迎提供解决方法的建议。
更新:更多细节:我不确定我的确切SDK版本,除了它伴随Flex 3,但如果我运行ASDoc而没有参数,它会报告:{{1} }。我在Windows XP上运行这一切,来自放置在类路径目录中的批处理文件。
部分解决方案:通过升级到Flex 4 SDK的4.0.0.7219测试版(并使用其中分发的ASDoc)解决了我的一个问题。现在,我的所有Adobe ASDoc Version 3.3.0 build 4852
代码都按预期工作。唯一剩下的问题是,无论我有什么方法返回一个属于我的文档的类,ASDoc只会破坏链接。例如,如果我的签名为@see
的方法,那么在文档中显示的位置,文本“ClassB”链接到“packageName:ClassB.html”而不是“packageName / ClassB.html”。这似乎是一个简单的错误。的Bleh。
答案 0 :(得分:1)
ASDoc令人沮丧,永无止境。您是否尝试将完整的包/类名明确添加到@see,即:
@see myPackage.myClass#MyProperty
看看是否有所作为?
修改强>
我根据您的发现进行了一些测试,内部属性标记对我有用。即。
@see #_dispatcher
直接链接到页面上的该属性(没有双子文件夹)。我想也许你需要重新思考你是如何运行命令的。例如,我的代码库就这样设置了:
/src
/com
/bkwld
/fetch
我通常在“src”中运行asdoc:
asdoc -source-path . -doc-classes com/bkwld/fetch/Fetch
我在Fetch.as中尝试了所有这些,并且它们都按预期工作:
* @see FetchItem
* @see com.bkwld.utils.Logger
* @see #_dispatcher
首先把我带到了FetchItem页面,第二次带我到另一个包中的Logger页面,第三次将页面跳到了Fetch的受保护方法。
出于好奇......你使用的是什么版本的sdk?
答案 1 :(得分:0)
我猜问题就在于你的行
-doc-sources myPackage
指定'。'而不是'myPackage'应该修复它(所以使它与你的源路径相同)
答案 2 :(得分:0)
我编写了一个简单的Python脚本,修复了上面提到的情况下asdoc错误生成的路径。也就是说,如果有方法myMethod(v:MyClass,...) asdoc错误地生成链接href =“../ mypackage:Myclass” 该脚本将修复此替换:by /
我应该注意到我生成的文档有一个非常“扁平”的结构,就是一个包含一堆类的包。我不知道修复程序是否适用于更复杂的文档结构。
无论如何,如果有人想尝试这个剧本,我很乐意发送它。