C и doxygen - удаление дубликатов переменной документации

Я документирую свой код C с помощью Doxygen. Для лучшей читаемости я группирую документацию каждой пары файлов.c/.h (иногда также больше файлов) с defgroup а также addtogroup (см. doxygen в c: группировка определений). Страницы файла выглядят хорошо, но на страницах групп / модулей вся переменная документация удваивается. Есть 2 записи для каждой переменной, которая объявлена ​​(с extern) в заголовочном файле и определена в файле.c (в сводке, а также в части описания). Функции и все остальное указано только один раз...

Как избавиться от дублирующей документации переменных на страницах групп / модулей?

Мои исходные файлы выглядят так:.h file:

/** @file
*   blabla
*   @author bla
*/
/// @addtogroup MY_GRP
/// @{
#define SOMEDEF1 1
/// @name Special defs
/// @{
#define SOMEDEF2 2
/// @}
enum someenum {
    foo,
    bar
};

extern int some_variables;

extern void some_proc(int baz);

/// @}

.c файл:

/** @file
 *  blabla
 *  @author bla
 */
/** @defgroup MY_GRP A test group.
  * Description
  */
/// @{
#include "my.h"

/// Important variable.
int some_variable;

/** Important proc
 *  Description
 *  @param baz need this
 */
void some_proc(int baz) {
// code
}

/// @}

1 ответ

Решение

Не могу действительно решить проблему, но нашел мне обходной путь: я использую INPUT_FILTER вариант с grep -Eve "extern" (cygwin) для сортировки всех строк с "extern" функциями или объявлениями переменных. Так как я документирую только фактические реализации функций и определения переменных, все, с "extern" перед ним, в любом случае не имеет документации и может быть удалено для doxygen. Это действительно также удаляет все повторяющиеся записи для переменных в выводе doxygen.

Вместо того, чтобы использовать INPUT_FILTER значение конфигурации с sed или grep (которая отлично работает в Linux, в Windows для этого требуется Cygwin или MSYS2, и он медленнее...), в настоящее время я использую следующий прием:

  • Установлен PREDEFINED = extern=//
  • Установлен EXPAND_AS_DEFINED = extern

Таким образом, любая строка, начинающаяся с extern отключен с помощью комментария C++.

Другие вопросы по тегам