Есть ли что-то вроде линтера / форматтера / средства проверки корректности блоков Doxygen для C ++? - PullRequest
1 голос
/ 08 мая 2020

Вот некоторые вещи, которые могут уменьшить количество повторений изо дня в день:

  • Автоматически «пометить» или предупредить меня о блоках doxygen, где количество разделов param не соответствует количество аргументов в объявлении функции под ним
  • В идеале, сообщите мне, если имена параметров также не совпадают
  • Отметить / предупредить меня о блоках doxygen, параметры которых отсутствуют [in], [out] или [in,out]. В идеале автоматически заполняйте все, что помечено const как [in]
  • Что-то, что нужно преобразовать между \ и @ для всех разделов одновременно, вместо того, чтобы делать это ~ 4 раза с помощью поиска и замены.
  • Что-то для красивого форматирования блоков. В качестве примера приведу простой блок doxygen, который я считаю «неформатированным»:
  /**
   * \brief Given a position in the grid, this updates the per-code bounds.
   * \param[in] code - The code we are adjusting the bounds of
   * \param[in] position1 - The new lower position
   * \param[in] position2 - The position of the lower cell within the high-level cell, 
   * this has a long description that may wrap over a couple lines.
   * \return How many positions we had to move
   */
  int updateExtents(
      const ObjCode code,
      const Geo::Point<uint8_t>& upperPos,
      const Geo::Point<uint8_t>& lowerPos);

А вот как он выглядит с небольшим дополнением:

  /**
   * \brief Given a position in the grid, this updates the per-code bounds.

   * \param[in] code       - The code we are adjusting the bounds of
   * \param[in] position1  - The new lower position
   * \param[in] position2  - The position of the lower cell within the high-level cell, 
   *                         this has a long description that may wrap over a 
                             couple lines.

   * \return How many positions we had to move
   */
  int updateExtents(
      const ObjCode code,
      const Geo::Point<uint8_t>& upperPos,
      const Geo::Point<uint8_t>& lowerPos);

Это очень субъективно, но описания каждого параметра теперь выровнены по ближайшей вкладке и переносятся в этот момент, а не в начало. Я считаю, что это делает его более читаемым.

...