Краткое описание
Я использую doxygen (версия 1.8.16) для документирования некоторых проектов на python. Один из основных процессов называет некоторые подпроцессы потоками. К сожалению, это не распознается в графах вызовов в Doxygen. Я предполагаю, что это потому, что эти функции передаются в качестве аргументов (без "()").
# functionA / functionB are not recognised as called functions by doxygen
t1 = Thread(target = functionA, args=(argA,argB))
t2 = Thread(target = functionB, args=(argC,argD))
t1.start()
t2.start()
t1.join()
t2.join()
Есть кто-нибудь передовой опыт или взломать или фильтр для doxygen, чтобы позаботиться о таких случаях, когда функциивызывается косвенно?
Полный пример
Пример файла python для документа
## @file
#@brief This is a simple doxygen test document.
## @brief A test function
# This is a simple test function for doxygen.
# It calls two functions, <em> functionA, functionB </em> by spawning threads, which is not recognised by doxygen.
def test():
t1 = Thread(target = functionA, args=(argA,argB))
t2 = Thread(target = functionB, args=(argC,argD))
t1.start()
t2.start()
t1.join()
t2.join()
## @brief Another test function
# This is a simple test function for doxygen.
# It calls two functions, <em> <functionA, functionB> directly, which is recognised by doxygen and reflected in the callgraph.
def test_serial():
functionA()
functionB()
## @brief One test function
# @param testParA \b =1 A test constant
# @return \b str A test return
def functionA():
testParA = 1
testVarA = "test"
return testVarA
## @brief Another test function
# @param testParB \b ="test" A test constant
# @return \b int Another test return
def functionB():
testParB = "test"
testVarB = 1
return testVarB
Конфигурация doxygen слишком длинная, чтобы добавить сюда. Вы можете использовать по умолчанию и просто добавить. Обратите внимание, что графвиз с точкой необходимо установить и найти (т.е. добавить в среду PATH)
OPTIMIZE_OUTPUT_JAVA = YES
EXTRACT_LOCAL_METHODS = YES
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
HAVE_DOT = YES
UML_LOOK = YES
CALL_GRAPH = YES
CALLER_GRAPH = YES