2009-06-01 5 views
6

この質問は、AS3から文書を作成するためにASDocを使用することに関係しています。私はFlexや何かからコマンドラインを使っているだけではありませんが、すべて正常に動作し、ASDocはエラーを返さないが、結果として得られるドキュメントのいくつかのリンクが壊れている。ASDocで壊れたパスを修正していますか?

特に、ドキュメントの他の部分(同じクラスを含む)のプロパティやメソッドへのリンクがある場所では、リンクはパッケージに対応するフォルダを倍にします。

例えば、myPackage.MyClassを文書化しているとします。 MyClass場合MyPropertyというプロパティがあり、どこか私のドキュメントで私はこのような行が含ま:

@see #MyProperty 

はその後、ドキュメントが正しく解析され、「参照:」リンクが正しく作成されたが、それが指して巻き取りますもちろん、実際のファイルシステムに一つだけmyPackageフォルダがある

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

へ。

私の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を指定することになり、引数、またはそれらの線に沿って何かが足りないのですか?これは普通のバグだったとすれば多くの人には明らかですが、私は問題のためのGoogleの結果を見つけることができませんので、私の実際の仮説は、FlexからASDocを実行している人には起こりません。除外されました。

ありがとうございました!


TypeOneErrorの提案では、さまざまな種類の@seeリンクを試しました。私は、これらが正常に動作していることが見つかりました:

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

これらは動作しませんが:

  • @see #property
  • すべてのナビゲーション・リンクが働くもののビット悪いことは何
  • @see full.package.ClassName#property

が、ある、同じ倍増パスが自動的に生成されたタイプのリンクで発生します。たとえば、各メソッドのシグネチャが表示されている場合、そのメソッドがドキュメント内にあるクラスを返すと、そのリンクは破損します。

また、HTMLを見て、問題がページのベースURLなどとは見えないことが判明しました。リンクが矛盾しているだけです。したがって、連続した@seeリンクの行では、それらのうちのいくつかはClassName.htmlにリンクし、package/ClassName.htmlへのリンクは上記の規則によってリンクされています。これは、ページがフレームで表示されているかどうかにかかわらず、すべてが真です。

私が何かを考え出すなら、さらに詳しい情報がありますが、回避策のアイディアは大歓迎です。


更新:いくつかの詳細は:私はそれは、Flex 3を伴うことを除いて、私の正確なSDKのバージョンのわからないんだけど、私は引数なしのASDocを実行する場合、それは報告しますAdobe ASDoc Version 3.3.0 build 4852を。私はクラスパスディレクトリに配置されたバッチファイルから、Windows XP上でこれをすべて実行しています。


部分的な解決策:すべてが、私の問題の一つは、のFlex 4 SDKの4.0.0.7219ベータリリースにアップグレード(およびその中に分散されるASDocを使用)により分離しました。今、私の@seeタグはすべて期待どおりに動作します。残っている唯一の問題は、ドキュメントの一部であるクラスを返すメソッドがあれば、ASDocは単にリンクをマングル化するということです。たとえば、署名がClassA#getB():ClassBのメソッドがある場合、そのドキュメントのどこに表示されるのか、「ClassB」というテキストは「packageName/ClassB.html」ではなく「packageName:ClassB.html」にリンクします。これは簡単なバグであるようです。ブリー。私はこの問題を推測すると思います

答えて

1

ASDocは無駄です。 @seeに完全なパッケージ/クラス名を明示的に追加しようとしましたか?

@see myPackage.myClass#MyProperty 

違いが見られますか?

編集

私はあなたの知見に基づいていくつかのテストを実行し、内部プロパティマーカーは私のために働いています。ページ(なしダブルサブフォルダ)にそのプロパティへの直接

リンク#_dispatcherすなわち

@see。私はコマンドをどのように実行しているのか考え直す必要があるかもしれないと思います。例えば、私のコードベースはthuslyに設定されています

/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ページに連れて行ってくれました。

ちょうど好奇心から...あなたはどのバージョンのSDDを使用していますか?

+0

うーん、それは違いをもたらした...私は結果を更新します。 – fenomas

+0

テストを追加しました。FYI – typeoneerror

+0

非常に感謝しています。私はあなたと同じようにASDocを呼び出しています - バッチファイルをクラスパスディレクトリの最上位のパッケージ(あなたの例では "com")と同じレベルに保ちます。私は私の質問にいくつかのバージョンの詳細を追加します。あなたはFlexBuilderやEclipseを使ってASDocを実行していませんか? – fenomas

0

-doc-ソースは

の指定をmypackageとあなたのラインです '' 'myPackage'の代わりにそれを修正する必要があります(ソースパスと同じにしてください)

+0

恐れていない、これはそれを文書にしてみてくださいます他のすべてのソースを他の場所に移動すると、以前と同じようにASDocがエラーなく完了し、バグは変わりません。 – fenomas

+0

そうでなければ示唆する。 -doc-sourcesでのpackagenameの使用は間違いなく間違って感じます。 –

+0

"-doc-classes packageName.ClassName"のように、-doc-sources行を完全に削除し、-doc-classes経由でクラスを追加しようとしました。しかし、それはバグに何の影響も与えなかったようだ。それはasdocを呼び出すより普通の方法でしょうか? – fenomas

0

上記のような場合に、asdocで誤って生成されたパスを修正する単純なPythonスクリプトを書いています。つまり、メソッドmyMethod(v:MyClass、...)がある場合 asdocはリンクhref = "..を間違って生成します。/ スクリプトはこれを次のように置き換えて修正します:/

私が生成しているドキュメントはかなりフラットな構造、つまり一連のクラスを持つ単一のパッケージです。修正プログラムは、より複雑な文書構造で動作する場合、私は見当がつかない。

をとにかく、誰もがスクリプトを試してみたい場合、私はそれを送信するために喜んでいるよ。

関連する問題