web-dev-qa-db-ja.com

Objective-Cドキュメントジェネレーター:HeaderDoc対Doxygen対AppleDoc

職場にドキュメント生成ソリューションを実装する必要があり、タイトルに記載されている3つに絞り込みました。これらのソリューション間の形式化された比較の方法では、ほとんど情報を見つけることができませんでした。また、上記の1つ以上の経験をお持ちの方が参考になることを願っています。

これが最初のパスから収集できたものです。

HeaderDoc Pros:Appleの既存のドキュメントとの整合性、Apple docsetsの作成との互換性
HeaderDocの短所:振る舞いを変更するのが難しく、プロジェクトは積極的に取り組んでおらず、多くはプロジェクトから離れています(つまり、定量化することはできませんが、何かが不足しているはずです)。

Doxygen Pros:幅広い使用ベースのアクティブサポートコミュニティb/c、非常にカスタマイズ可能な、ほとんどの出力タイプ(ラテックスなど)
Doxygenの短所:りんごのドキュメントと見た目/動作の一貫性を保つための作業が必要です。Apple docsetsとの互換性はそれほど単純ではありません

AppleDoc Pros:Appleの既存のドキュメントとの整合性、Apple docsets、
AppleDocの短所:typedef、enum、およびfunctionsのドキュメントに関する問題、積極的に開発中

この音は正確ですか?希望するソリューションは次のとおりです。

  • Apple Objective-Cクラスリファレンスを使用した一貫したルックアンドフィール
  • オプションクリックでXcode内からドキュメント参照を取得し、ドキュメントにリンクする機能(Appleのクラスと同様)
  • カテゴリ、拡張機能などのスマートな処理(Appleのクラスのカスタムカテゴリも)
  • 独自の参照ページを作成する機能(このページのように:画像を含めることができ、AppleのUIViewControllerクラス参照がリンクされたページにリンクするように、生成されたクラス参照からシームレスにリンクできます。
  • ビルドスクリプトに統合できる、実行しやすいコマンドラインコマンド
  • 非常に大きなコードベースの優雅な処理

上記のすべての情報に基づいて、上記のソリューションのいずれかが他のソリューションより明らかに優れていますか?追加する提案や情報は非常にありがたいです。

74
KeithComito

Doxygenの作成者およびリード開発者として、私の視点も提供させてください
(明らかにバイアス;-)

Apple独自のドキュメントスタイルの100%忠実なレプリカを探しているなら、AppleDocはその点でより良い選択です。 doxygenを使用すると、まったく同じ外観を得るのに苦労するので、試してみるのはお勧めしません。

Xcodeドキュメントセットに関して。 Apple提供 指示 doxygenで設定する方法(Xcode 3がリリースされた時に書かれた)。Xcode4には 素敵なガイド doxygenを統合する方法。

バージョン1.8.0の時点で、doxygenは Markdown markup をサポートし、多数の追加の markup コマンドをサポートしています。

Doxygenを使用すると、メインページ(@mainpage)とサブページ(@subpageまたは@pageを使用)にドキュメントを含めることができます。ページ内でセクションとサブセクションを作成できます。実際、doxygenのユーザーマニュアルは完全にdoxygenを使用して書かれています。それに加えて、クラスまたは関数をグループ化して(@defgroupと@ingroupを使用)、クラス内でカスタムセクションを作成できます(@nameを使用)。

Doxygenは、構成ファイルを入力として使用します。 doxygen -gを使用してデフォルト値でテンプレートを生成するか、 グラフィカルエディター を使用してテンプレートを作成および編集できます。 doxygen -を使用してスクリプトを介してオプションをdoxygenにパイプすることもできます(例については [〜#〜] faq [〜#〜] の質問17を参照してください)

DoxygenはObjective-Cに限定されず、C、C++、およびJavaを含む広範囲の言語をサポートします。また、DoxygenはMacプラットフォームに限定されません。 WindowsとLinuxでも動作します。 Doxygenの出力は、HTMLだけではありません。 =(= LaTeXを介して)PDF出力)またはRTFおよびmanページを生成できます。

Doxygenは、純粋なドキュメントを超えています。 doxygenは、ソースコードからさまざまなグラフと図を作成できます( dot 関連オプションを参照)。 Doxygenは、コードの参照可能な構文強調バージョンを作成し、ドキュメントと相互参照することもできます( source browser 関連オプションを参照)。

Doxygenは、中小規模のプロジェクトでは非常に高速です(ただし、ダイアグラムの生成は遅くなる場合がありますが、最近では複数のCPUコアで並行して実行され、1回の実行のグラフは次の実行で再利用されます)。非常に大規模なプロジェクト(たとえば、数百万行のコード)の場合、doxygenを使用すると、プロジェクトを複数のパーツに分割し、説明したようにパーツをリンクできます here

Objective-Cにdoxygenを使用した実例は、 here にあります。

Doxygenの開発は、ユーザーのフィードバックに大きく依存しています。アクティブな メーリングリスト が質問とディスカッション用に、 バグトラッカー がバグと機能リクエストの両方にあります。

DoxygenのほとんどのユーザーはCおよびC++コードに使用するため、当然これらの言語は最も成熟したサポートを備えており、出力はこれらの言語の機能とニーズに合わせて調整されています。とは言うものの、他の言語の要望や問題も真剣に受け止められています。

私はほとんどすべてのdoxygen開発とほとんどのテストをMacで自分で行っていることに注意してください。

89
doxygen

私はappledocの作者なので、この答えは偏っているかもしれません:)私は言及されたすべてのジェネレーターを試しましたが(そしてそれ以上)、私が望んでいた結果を生み出していないのでイライラしました(あなたと同じような目標)。

あなたのポイントによると(appledocとdoxygenについてのみ言及していますが、headerdocについてはあまり思い出しません):

  1. 一貫性のある外観:そのままの状態のappledoc、cssを微調整する必要があるが、おそらく実行可能。

  2. ドキュメントセットの生成(Xcode参照用):検索可能なドキュメントやオプションでクリック可能なドキュメントをAppleDocが完全にサポートしているため、doxygenはxmlとmakefileを生成します。さらに、appledocは、 公開されたドキュメントセット をそのままサポートします。

  3. カテゴリ:appledocを使用すると、既知のクラスに カテゴリをマージ するか、それらを分離したままにすることができます。基礎とその他Appleクラスカテゴリは インデックスファイル =。doxygen:これを試したとき、これはうまくいきませんでした。

  4. カスタムリファレンスページ:appledoc supports マークダウンまたはカスタムhtmlを使用してすぐに使用可能、doxygen:メインページにカスタムドキュメントを含めることができますが、さらにページを含めることができるかどうかはわかりません。

  5. 簡単なコマンドライン:見方によって異なります:appledocはコマンドラインスイッチを介してすべての引数を取ることができます(ただし、オプションのグローバルおよびプロジェクト設定のplistファイルもサポートしています)。したがって、ビルドスクリプトとの統合は非常に簡単です。 doxygenでは、すべてのパラメーターをセットアップするために構成ファイルを使用する必要があります。

  6. 大規模なコードベース:すべてのツールはこれをサポートする必要がありますが、時間的な比較は行いませんでした。また、キャッシュされた値をサポートするツールがあるかどうかもわかりません(時間を節約するために以前に収集したデータを実行します)-次のメジャーリリースでこれを追加することを検討しています。

私が他のツールを使ってみてからしばらく経ったので、上記のdoxygen/headerdocの問題は解決されたかもしれません! appledoc自体にも欠点があります:列挙型、構造体、関数などのサポートがないことを述べたように(この方向でいくつかの作業が行われました このフォークを確認してください )、独自の 一連の問題 要件に応じて、使用できない場合があります。

現在、列挙型、構造体などのサポートを含む ほとんどの明白な問題をカバーする のメジャーアップデートに取り組んでいます。大きなチャンクを完成させて安定させるとすぐに、新しいものを実験ブランチに定期的にプッシュしています十分なので、進行状況を追跡できます。しかし、それはまだ非常に早く、進歩は私の時間に依存するので、ソリューションが機能するまでかなり時間がかかるかもしれません。

82
Tom

Xcode 5はコメントを解析してドキュメントを検索し、表示します:

Comment example

もうAppledocやdoxygenを使用する必要はありません(少なくともドキュメントをエクスポートしたくない場合)。詳細については、こちらをご覧ください こちら

12
Lukas