Как скрыть определенную функцию (в С++) в doxygen?

У меня есть класс, который имеет функции мая, и я хочу скрыть определенную функцию. Например

class Test
{

   /**
    * About Function1
    *
    * @param[in]  arg1  About arg1
    * @param[in]  arg2  About arg2
    */        
    public void Function1(int arg1,char arg2);

    // Presume same documentation for this function also
    public void Function2(int,char);

    // Presume same documentation for this function also
    public void Function3(int,char);

    // Presume same documentation for this function also
    public void Function4(int,char);
} 

Предположим, я хочу скрыть, скажем Function2, как бы я это сделал.

Теперь в текущем сценарии он отображает все четыре функции вместе со своими документами.

Теперь у меня есть следующий атрибут в моем файле правил.doxygen:

EXTRACT_ALL = YES

Можете ли вы предложить мне что-то, что я могу скрыть, скажем, Function2?

Ответ 1

Сделайте что-то вроде этого:

#ifndef DOXYGEN_SHOULD_SKIP_THIS

 /* code that must be skipped by Doxygen */
 /* in your case a method/function */

#endif /* DOXYGEN_SHOULD_SKIP_THIS */

И в файле конфигурации поместите PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS Убедитесь, что для параметра ENABLE_PREPROCESSING установлено значение YES.

Короче говоря, вы просто используете концепцию препроцессора, чтобы работать на вас!

Ответ 2

Если в файле конфигурации есть EXTRACT_PRIVATE = NO, вы можете пометить любой член как закрытый для Doxygen и не будет генерировать документацию для этого члена:

/// @private
public void Function2(int, char);

Бонусный вопрос: если вы хотите использовать одну и ту же документацию для всех четырех членов, вы можете сделать это, используя один из следующих способов:

/**
 * About Function1,2,3,4...
 */
/// @{
public void Function1(int arg1, char arg2);
public void Function2(int arg1, char arg2);
public void Function3(int arg1, char arg2);
public void Function4(int arg1, char arg2);
/// @}

/**
 * About Function1,2,3,4...
 */
public void Function1(int arg1, char arg2);
/// @copydoc Function1
public void Function2(int arg1, char arg2);
/// @copydoc Function1
public void Function3(int arg1, char arg2);
/// @copydoc Function1
public void Function4(int arg1, char arg2);

Для использования @{... @} требуется использовать DISTRIBUTE_GROUP_DOC = YES в файле конфигурации.

Ответ 3

Использовать cond или internal

/*! \cond PRIVATE */
//only documented if cond is enabled
// ...
/*! \endcond */

Ответ 4

Я думаю, что когда-то использовал EXCLUDE_SYMBOLS, чтобы достичь чего-то подобного.

Тег EXCLUDE_SYMBOLS может использоваться для указания одного или нескольких имен символов (пространств имен, классов, функций и т.д.), Которые должны быть исключены из выходных данных. Имя символа может быть полностью определенным именем, словом или, если используется подстановочный знак *, подстрокой. Примеры: ANamespace, AClass, AClass :: ANamespace, ANamespace :: * Test

К сожалению, я не могу полностью вспомнить или найти запись конфигурации.

EXCLUDE_SYMBOLS = Test::Function2*