2011-07-01 1 views
4

ユニットテストのセットを記述するためにdoxygenを使用する設定があります(私はテストを実行するためにQtTestを使用します)。テストからの出力は、ちょっとしたPythonスニペットによって解析され、すっきりとしたレポートが生成されます。今、レポートから各テストケース、つまりdoxygenのプライベートスロットメンバーメソッドにリンクしたいと思います。しかし、doxygenで定義されたアンカーは、次のようになります。doxygen htmlのクラスメソッドにリンクするには

<a class="anchor" id="a2a0e066d4dad8e0dff6c9231bf65fd65"></a> 
<!-- doxytag: member="PRadioTunerTst::scanFM" ref="a2a0e066d4dad8e0dff6c9231bf65fd65" args="()" --> 

確かに、私は、doxygenののHTMLを解析し、参照キーへのすべての方法と一致しますが、私はむしろ読めるリンクを持っているだろうことができます。私は単体テストのケースメソッドをオーバーロードしないので、それらを列挙することは問題にはならないでしょう - 私は単に最初のものだけを選ぶことができます。 idハッシュを自分で計算するのも嬉しいです。私はちょうど方法を知る必要があります。

ので、基本的には、質問がある:

  • 誰がいない場合は読み込み可能なアンカー
  • を生成する方法に同調doxygenを 知っているか、どのように私はハッシュを計算していますか?

答えて

4

ハッシュを再構築しようとするのではなく(doxygenで解析されたメソッド定義のmd5チェックサムです)、コードのMemberDef :: setAnchor()を参照してください。私はdoxygenにタグファイル(GENERATE_TAGFILE)を生成させ、それを解析させることを提案します。タグファイルは、各メンバの名前とアンカーの両方を持つ単純なXMLファイルです。

+0

私は、LaTeXで生成された別のPDFからdoxygenで生成されたhtmlファイルにリンクしようとしています。 LaTeXファイルをコンパイルするたびに解析する必要はありません。ここは大胆なようです。 doxyが人間が読めるアンカーを出力できない理由はありますか? – frank

+0

私にはっきりさせてください。私は、オーバーライドされたクラスメソッドのセットの先頭を簡単に参照できるようにしたいと考えています。私のクラスで宣言されているgetFoo(int)getFoo(float)などがある場合、#getFooアンカーが単にHTMLの最初の記述を指しているといいでしょう。 タグファイルが同じ順序で並べられていない場合、メソッドはhtmlページに配置されていますが、問題は解決しません。私はどのアンカーが最初の上書きを指しているかを、HTMLに現れているかどうか分かりません。 – frank

+0

アンカーはASCII文字とアンダースコアのみを含むことができ、大文字と小文字は区別されないため、読み取り可能な名前には使用できません(ref:http://www.w3.org/TR/html401/struct/links.html#h-12.2.1 ) – doxygen

0

私の場合は、最初の文書がbreathe/doxygenで作成されたhtmlを指すようにする必要がありました。ここに私がやったことだ:

printf("memAnchor=%s sigStr=%s\n", memAnchor.data(), sigStr.data());

、のような出力を作成します:

memAnchor=const int SomeNamespace::GetStateGetState(SomeNamespace::State *state) sigStr=f2c41a8a6a152602c92fefb80bd0862a 

が良いdoxygenには、アンカーを作成する方法を理解するために、私はsetAnchor()の最後にこれで、doxygenを再コンパイル

私は既に関数のシグネチャを持っていましたので、上記のmemAnchorに似た文字列を作成し、md5sumにパイプしてハッシュを取得し、すべてのアンカーに共通の文字列に追加しました。私の最初の文書では、次のような定義を入れました。

.. _GetState: `project0class_SomeNamespace_1f2c41a8a6a152602c92fefb80bd0862a`_ 

最初に読むことのできるアンカーについては不明です。

+0

正確に何を行う必要があるかはあまり明確ではありません。あなたはより簡潔な方法で答えを言い換えることができますか? –

関連する問題