Файлы Markdown в Doxygen, две головоломки

#markdown #doxygen

#markdown #doxygen

Вопрос:

Среда — Doxygen 1.8.7 в Microsoft Windows 10.

Я работаю над проектом Doxygen, который включает в себя несколько файлов markdown, которые все следуют этому шаблону:

   1  Copyright (c) 2016-2017, XYZ CORP. All rights reserved.
  2
  3  @page xxx yyy
  4  @{
  5    Start of text
         .
         .
         .
       End of text
  

У меня есть два вопроса по этому поводу.

Во-первых, файл не @} балансирует @{ в строке 4, но Doxygen не выдает никаких предупреждений. Это просто ошибка или причуда в Doxygen, или это действительно по какой-то причине, которую я не понимаю?

Во-вторых, этот файл выдает (как минимум) две страницы выходных данных. Одна озаглавлена yyy и содержит текст из строк 5 и ниже, и это нормально. Другая озаглавлена md_<d>_<dd>_<ddd>_xxx.html , где <d>_<dd>_<ddd>... указаны имена каталогов в пути от домашнего каталога репозитория до файла. Этот не содержит ничего, кроме уведомления об авторских правах, которое бесполезно и выглядит глупо.

Есть ли способ убрать эту страницу?

Обратите внимание, я не понял, как перейти на страницу «авторское право» с домашней страницы проекта, щелкнув ссылки. Если это невозможно сделать, то существование страницы тривиально. Но я предполагаю, что, поскольку Doxygen генерирует страницу, он предоставляет какой-то способ ее отображения, который я просто еще не нашел.

Комментарии:

1. Уверен, что вы используете doxygen 1.8.7 (апрель 2014), текущая версия 1.8.20…

Ответ №1:

Как уже отмечалось в комментарии, версия 1.8.7 немного устарела (апрель 2014 года), а текущая версия doxygen — 1.8.20. Решения в этом ответе основаны на doxygen 1.8.20 что касается 1.8.7, они не будут работать в 1.8.7 (в 1.8.17 они должны работать)

В вопросе упоминаются 2 проблемы

  • нет предупреждения в случае @{ без закрытия @} . Это, вероятно, неверно, но @{ в @page любом случае не имеет никакого значения. Это следует изучить подробнее и, вероятно, стоит новой проблемы в doxygen issue tracker: https://github.com/doxygen/doxygen/issues/new/choose .. Я только что отправил предложенный патч на github (запрос на извлечение 8060, https://github.com/doxygen/doxygen/pull/8060 ).

  • удаление «авторских прав»
    в файле markdown, когда первая непустая строка не является командой страницы (например @page , @mainpage textn==== ), doxygen добавит @page команду с именем файла в качестве заголовка. Существует ряд возможностей «преодолеть» эту проблему. В Doxygen есть ряд команд, которые делают содержимое больше или меньше комментария и, таким образом, не отображаются в выходных данных. Это:

    • <!-- ....-> т. е. обычные знаки комментариев HTML (также удалят это содержимое из других выходных форматов)
    • cond [<label>] endcond в случае, если значение ` равно false или отсутствует, содержимое блока не отображается
    • if <label> endif в случае, если значение ` равно false, содержимое блока не отображается
    • noop ... текст в одну строку после команды не отображается.

    Проблема здесь в том, что они не удаляют ссылку на страницу (поскольку команды не отображаются в непустых строках из-за порядка обработки), для достижения этой цели есть решение:

    • переместите содержимое с помощью команд «комментарий» внутрь (по крайней мере, где-то после первой @page команды like. Таким образом, решение может выглядеть так:
       @page xxx1 yyy1
      <!--
      Copyright (c) 2016-2017, XYZ CORP. All rights reserved.
      -->
      
      Start of text1
        

Похоже, я уже создал некоторое время назад предложенный запрос на извлечение, касающийся автоматической обработки <!-- : https://github.com/doxygen/doxygen/pull/6909

Редактировать 29 сентября 2020 года Запрос на извлечение https://github.com/doxygen/doxygen/pull/8060 был интегрирован в мастер-версию doxygen.

Комментарии:

1. Что касается @{ проблемы, я только что отправил предложенный патч на github (запрос на извлечение 8060, github.com/doxygen/doxygen/pull/8060 ).

2. @page xxx yyy n <!-- Copyright... -> вероятно, это лучшее решение. Мне нужно будет найти оригинальные инструкции нашего юридического отдела, чтобы узнать, допустимо ли это. В противном случае добиться изменения политики может быть очень сложно. /// Что касается версии: да, я совершенно уверен, что использую 1.8.7, а также что обновление невозможно. 1.8.7 встроен в наш набор инструментов, и нет никакой необходимости это менять.

3. Что ж, у вас может быть веская причина изменить его сейчас (помимо всех улучшений, сделанных за это время в doxygen). Изменить версию doxygen не должно быть сложно, она должна работать сразу. Вы также используете Windows 10, и это даже было выпущено после версии doxygen 1.8.10.

4. Я предполагаю, что вы используете множественное число «вы» — у меня нет полномочий делать это самостоятельно. Практически нет шансов, что кто-то еще серьезно задумается о внесении изменений, если только какая-то проблема или требование не заставят это сделать. Рабочая нагрузка слишком велика, чтобы позволить нам делать то, что мы просто должны делать!