В настоящее время я изучаю, как обеспечить соблюдение стандартов кодирования нашей компании, используя различные инструменты, предоставляемые llvm-clang
.Один из стандартов заключается в том, что каждая функция c ++ должна иметь точную документацию в стиле * 1002.
Примечание : в настоящее время я использую clang v6.0.0, , а не v9.
Сначала я посмотрел на флаг clang -Wdocumentation, но из моего исследования он упускает некоторые из моих необходимых функций:
- Хотя все
@param
с и @tparam
св doxygen проверяются соответствующие параметры и параметры шаблона в ассоциированной функции, пропущенные @param
s или @tparam
s не отлавливаются.Я хотел бы выдать предупреждение в этом случае. - Я также хотел бы выдать предупреждение, если порядок
@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
в приведенном выше коде, ошибки не генерируются. Я хотел быгенерируются следующие ошибки:
- параметры
y
и x
находятся в неправильном порядке - параметр
z
отсутствует @param
- параметр шаблона
T
отсутствует @tparam
- отсутствует
@return
Кто-нибудь знает, можно ли настроить какие-либо существующие инструменты под мои требования?Если нет, есть ли у кого-нибудь совет, как подойти к созданию собственного инструмента?