Расширение флага clang -Wdocumentation для отлова недостающих тегов doxygen (@param, @tparam, @return) - PullRequest
1 голос
/ 27 июня 2019

В настоящее время я изучаю, как обеспечить соблюдение стандартов кодирования нашей компании, используя различные инструменты, предоставляемые llvm-clang.Один из стандартов заключается в том, что каждая функция c ++ должна иметь точную документацию в стиле * 1002.

Примечание : в настоящее время я использую clang v6.0.0, , а не v9.

Сначала я посмотрел на флаг clang -Wdocumentation, но из моего исследования он упускает некоторые из моих необходимых функций:

  1. Хотя все @param с и @tparam св doxygen проверяются соответствующие параметры и параметры шаблона в ассоциированной функции, пропущенные @param s или @tparam s не отлавливаются.Я хотел бы выдать предупреждение в этом случае.
  2. Я также хотел бы выдать предупреждение, если порядок @param s в doxygen не соответствует порядку параметров вфункция (то же самое для @tparam с.

Далее я посмотрел на clang-tidy, clang-format и другие существующие инструменты лязга, но не смог найти ничего настраиваемого в соответствии с моими вариантами использования.

Наконец-то я занялся созданием своего собственного автономного инструмента лязга, но быстро оказался потрясен обширной документацией (я новичок во всем опыте лязга). Я попытался следовать довольно многим различным многообещающим предложениям, но без конкретногорезультаты.

Ниже приведена простая функция c ++, полукомментированная с помощью doxygen:

/// foo function
/// @param y second parameter
/// @param x first parameter
template <typename T>
int foo(int x, int y, int z) {
    ...
}

Если я запускаю clang -Wdocumentation foo.cpp в приведенном выше коде, ошибки не генерируются. Я хотел быгенерируются следующие ошибки:

  1. параметры y и x находятся в неправильном порядке
  2. параметр z отсутствует @param
  3. параметр шаблона T отсутствует @tparam
  4. отсутствует @return

Кто-нибудь знает, можно ли настроить какие-либо существующие инструменты под мои требования?Если нет, есть ли у кого-нибудь совет, как подойти к созданию собственного инструмента?

...