Doxygen Alias ​​не работает в функции php после необработанного HTML - PullRequest
2 голосов
/ 29 октября 2019

Я использую Doxygen для документирования своего php-проекта и настроил несколько псевдонимов. Они работают нормально в большинстве случаев, но когда он встречает их в блоке уровня функции, который находится после функции с необработанным HTML, он жалуется, что это неизвестный хук (предупреждение: найдена неизвестная команда '\ hook'). У меня он работает в нескольких разных файлах, но везде, где он находится после этого необработанного HTML, он не работает. Что я делаю не так?

Упрощенный файл:

<?php
/**
 * @file foo.php
 * Some description.
 *
 * @since       1.0.0
 * @author      Me
 * @hook        init  //This one works
 */

/**
 * Simple description.
 *
 * Long description.
 *
 * @class   Bar
 * @since   1.0.0
 * @author  Me
 * @hook    init  //This one works
 */
class Bar{

    /**
     * Description.
     *
     * @hook    init  //This one works
     * @since   1.0.0
     */
    function foobar1(){
        //Do stuff here...
    }

    /**
     * Description.
     *
     * @since   1.0.0
     */
    function html(){
        $url = "https://www.website.com/path";

        if($some_condition): ?>

            <div class="notice notice-info">
                <h2>Welcome!</h2>
                <p>If you need access to a site, additional permissions or you've found a bug, please visit <a href="<?php echo $url; ?>" target="_blank">this link</a></p>
            </div>

        <?php endif;
    }

    /**
     * Description.
     *
     * @hook    init  //This one doesn't work
     * @since   1.0.0
     */
    function foobar2(){
        //Do stuff here...
    }
}

Это поля (кроме входных данных и тому подобное), которые изменены в моем Doxyfile:

JAVADOC_AUTOBRIEF      = YES

ALIASES                = Block="@par Block name^^"
ALIASES                += Description="@par Block description^^"
ALIASES                += hook="@par Hook^^"

EXTRACT_ALL            = YES
EXTRACT_PRIVATE        = YES
EXTRACT_PACKAGE        = YES
EXTRACT_STATIC         = YES

SORT_MEMBER_DOCS       = NO

SHOW_NAMESPACES        = NO

#Using this to keep Doxygen from thinking reserved php words are variables
EXCLUDE_SYMBOLS        =  if
EXCLUDE_SYMBOLS        += elseif
EXCLUDE_SYMBOLS        += endif
EXCLUDE_SYMBOLS        += for
EXCLUDE_SYMBOLS        += endfor
EXCLUDE_SYMBOLS        += foreach
EXCLUDE_SYMBOLS        += endforeach
EXCLUDE_SYMBOLS        += while
EXCLUDE_SYMBOLS        += endwhile
EXCLUDE_SYMBOLS        += <?php
EXCLUDE_SYMBOLS        += ?>
EXCLUDE_SYMBOLS        += <script>
EXCLUDE_SYMBOLS        += </script>

В моем примере кода показан псевдоним Hook, но это та же история для любого из них.

Обновление: похоже, что-то связано с тем фактом, что функция находится ниже другой, которая имеет необработанный HTML вЭто. Я соответствующим образом обновил код.

Обновление: я обновил проблемную функцию с помощью HTML, который ближе к тому, что я на самом деле использую. В соответствии с запросом, здесь вывод этого файла при запуске doxygen -d commentscan

CommentScanner: C:/path/bar.php:2
input=[
@file bar.php
Some description.

@since       1.0.0
@author      Me
@par Hook\_linebr         init  //This one works
]
-----------
CommentScanner: C:/path/bar.php:2
output=[
brief=[line=2
]
docs=[line=3
Some description.

@since       1.0.0
@author      Me
@par Hook
init  //This one works]
inbody=[line=-1
]
]
===========
-----------
CommentScanner: C:/path/bar.php:11
input=[
Simple description.

Long description.

@class   Bar
@since   1.0.0
@author  Me
@par Hook\_linebr     init  //This one works
]
-----------
CommentScanner: C:/path/bar.php:11
output=[
brief=[line=11
Simple description.]
docs=[line=13
Long description.


@since   1.0.0
@author  Me
@par Hook
init  //This one works]
inbody=[line=-1
]
]
===========
-----------
CommentScanner: C:/path/bar.php:23
input=[
Description.

@par Hook\_linebr     init  //This one works
@since   1.0.0
]
-----------
CommentScanner: C:/path/bar.php:23
output=[
brief=[line=23
Description.]
docs=[line=25
@par Hook
init  //This one works
@since   1.0.0]
inbody=[line=-1
]
]
===========
-----------
CommentScanner: C:/path/bar.php:33
input=[
Description.

@since   1.0.0
]
-----------
CommentScanner: C:/path/bar.php:33
output=[
brief=[line=33
Description.]
docs=[line=35
@since   1.0.0]
inbody=[line=-1
]
]
===========
-----------
CommentScanner: C:/path/bar.php:52
input=[
Description.

@hook    init  //This one doesn't work
@since   1.0.0
]
-----------
CommentScanner: C:/path/bar.php:52
output=[
brief=[line=52
Description.]
docs=[line=54
@hook    init  //This one doesn't work
@since   1.0.0]
inbody=[line=-1
]
]
===========
C:/path/bar.php:54: warning: Found unknown command '\hook'
...