Как скрыть определенную функцию (в С++) в 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*