Doxygen - наследовать документацию от внешне документированного абстрактного класса - PullRequest
0 голосов
/ 05 февраля 2019

Я пишу документацию для моего класса C ++, который наследуется от абстрактного класса, документация которого уже предоставляется извне через файл тегов.

Я не хочу переписывать документацию нескольких унаследованныхфункционирует так, как если бы это была просто копия-вставка абстрактных родительских функций.Однако после указания моего файла тегов в конфигурации Doxygen и включения INHERIT_DOCS унаследованная документация все еще отсутствует ...

Я пропускаю какой-либо другой параметр или это может быть ограничением Doxygen?

Непосредственная обработка файла заголовка родительского абстрактного класса с помощью Doxygen работает как положено (документация включена в дочерний класс).Кроме того, удаление объявления унаследованной функции в моем дочернем классе добавит функцию в группу «Функции, унаследованные от ParentAbstractClass» (но, очевидно, больше не компилируется).

Вот мое рабочее дерево:

<root>
    +- ParentAbstractClass/
    |    +- html/
    |    |- ParentAbstractClass.tag
    |    |- ParentAbstractClass.hpp
    +- ChildClass/
    |    +- html/
    |    |- ChildClass.hpp
    |- Doxyfile_child

Содержание ParentAbstractClass.hpp

/**
 * @brief Parent class
 */
class ParentAbstractClass{
public:
    /**
     * Inherited function
     * @param[in] arg: input argument
     */
    virtual void inheritedFunction(const int arg)=0;
};

Содержание ChildClass.hpp

#include "ParentAbstractClass.hpp"

/**
 * @brief Child class
 */
class ChildClass : public ParentAbstractClass
{
public:
    // Following function should inherit the documentation from its parent
    virtual void inheritedFunction(const int arg); 
};

И некоторые соответствующие (на мой взгляд) варианты в Doxyfile_child:

OUTPUT_DIRECTORY       = ChildClass
INHERIT_DOCS           = YES
INLINE_INHERITED_MEMB  = NO
TAGFILES               = ParentAbstractClass/ParentAbstractClass.tag=../../ParentAbstractClass/html

Я использую Doxygen 1.8.14.

1 Ответ

0 голосов
/ 12 февраля 2019

INHERIT_DOCS работает внутри одного проекта.В файле тегов, сигнализирующем о внешнем проекте, нет информации о «родительской» функции.Как только вы добавите:

/// \copydoc ParentAbstractClass::inheritedFunction(const int arg)

в качестве документации к функции в ChildClass, вы получите "Implements ParentAbstractClass."со ссылкой на функцию на функцию в ParentAbstractClass.

...