10

Doxygenを使用してPythonクラスを文書化しようとしています。このクラスはd-busを介して一連のプロパティを公開しますが、これらにはpythonクラスに対応するパブリックゲッター/セッターがありません。代わりに、d-busプロパティインターフェイス(Set / Get / GetAll / Introspect)を介して実装されます。

私がやりたいのは、次のようなものを使用してこれらのプロパティを文書化できるようにすることです。

## @property package::Class::Name description

package :: Class全体が機能します(同じメソッドが関数を検出するため、適切なクラスが検出されます)。

doxygenを実行すると、次のエラーが発生します。

warning: documented function ``package::Class::Name' was not declared or defined.

警告を表示することはできますが、残念ながら、クラス用に生成されたドキュメントにプロパティが表示されないため、警告であるだけでなく、無音になります。

だから、私の質問は、可能であれば、生成されたドキュメントに存在しないプロパティメンバーを表示させるにはどうすればよいですか?

4

2 に答える 2

3

if 0:ブロック内で属性を定義します。

## @class X
## @brief this is useless
class X:
    if 0:
        ## @brief whatevs is a property that doesn't exist in spacetime
        ##
        ## It is designed to make bunny cry.
        whatevs = property

これにより、ドキュメントに存在するようになります(doxygen 1.8.1.2-1onでテスト済みdebian-squeeze)。この属性は実行時に存在することはありません。実際、Pythonバイトコードオプティマイザーはifステートメントとその本体を完全に削除しているように見えます。

于 2013-01-31T21:53:22.087 に答える
0

私は以前に似たようなものを調べましたが、Doxygenを誘導して未定義のメンバーを文書化する直接的な方法を見つけることができませんでした。ここで使用できる2つの基本的な応急修理があります。

1.)ライブコードに実際には存在しないインベントリへのdoxygenのダミーオブジェクト(またはダミーメンバー)を生成します。

2.)必要な調整がかなり予測可能で定期的である場合INPUT_FILTERは、ファイルを取得して解析する前に変換するfordoxygenを作成できます。この方法にはいくつかの問題があります。ほとんどの場合、ドキュメントにコードを含める予定で、フィルターがファイルから行を追加/削除する必要がある場合、それが示す行番号はオフになり、コードウィンドウはドキュメントはその行数だけずれます。表示されたソースをフィルタリングしてこれを調整するオプションをチェックすることもできますが、ドキュメントの利用者によっては、Doxygenのコピーが実際のソースのコピーと完全に一致しない場合に混乱する可能性があります。

この例では、Doxygenがファイルパスを引数としてコマンドラインから実行するPythonスクリプトを使用します。示されたファイルを読み取り、stdoutの代わりにDoxygenに解釈させたいものを書き込みます。doxygenに表示されているソースコピーもフィルタリングする必要がある場合は、に設定できFILTER_SOURCE_FILESますYES

于 2012-12-22T18:37:16.217 に答える