C++ ベースのソース コードを考慮して、インターフェイスの有無にかかわらずメソッドのプレーン テキスト リストを出力できるツールを探しています。これは、メソッドの名前または完全なインターフェイスのシグネチャのみの 2 つのオプションを意味します。
これを C のソースコードにも適用したいと思います。
ありがとう。
Doxygen の XML 形式とそれを解析するための小さな Python スクリプトを使用して、妥当なソリューションを簡単に構築できます。Doxygens XML 出力は十分に文書化されていませんが、かなり完全なようです。
これが私のpythonスクリプトです:
import lxml.etree
import glob
prefix = "/Code/stack_overflow_examples/list_functions_by_doxygen/"
for filename in glob.glob("xml/*.xml"):
f = open( filename, "r" )
xml = lxml.etree.parse(f)
for x in xml.xpath('//memberdef[@kind="function"]'):
srcfile = x.xpath('.//location/@file')[0].replace(prefix,'')
srcline = x.xpath('.//location/@line')[0]
definition = x.xpath('.//definition/text()')[0]
args = x.xpath('.//argsstring/text()')[0]
print( "%s:%s: %s%s" % ( srcfile, srcline, definition, args) )
このファイルで実行すると:
/**
* This is a test function.
*/
int a_function( Baz & b )
{
return 7;
}
void another_function( Boo & b )
{
}
class Foo
{
private:
int a_private_member_function();
public:
int a_public_member_function();
};
次の出力が生成されます。
test.cpp:16: int Foo::a_private_member_function()
test.cpp:18: int Foo::a_public_member_function()
test.cpp:5: int a_function(Baz &b)
test.cpp:10: void another_function(Boo &b)
「ドキュメント」の生成に使用する Doxyfile にいくつかの変更を加えるだけです。使用した変更は次のとおりです。
EXTRACT_ALL = YES
EXTRACT_PRIVATE = YES
EXTRACT_STATIC = YES
EXTRACT_LOCAL_METHODS = YES
EXTRACT_ANON_NSPACES = YES
CASE_SENSE_NAMES = YES
GENERATE_HTML = NO
GENERATE_LATEX = NO
GENERATE_XML = YES