doxygen AUTOLINK_支持和sa

doxygen AUTOLINK_支持和sa,doxygen,Doxygen,使用Doxygen 1.8.4版: 当配置文件中的AUTOLINK_SUPPORT=NO时,由\sa(或@See)生成的HTML See部分引用不是指向所引用方法的活动链接。当AUTOLINK\u SUPPORT=YES时,\sa引用是预期的活动链接 这似乎是对doxygen行为的一个相对较新的更改:多年来,我一直在使用AUTOLINK_SUPPORT=NO,以避免在描述文本中标记所有可能导致使用“%”字符的不需要的自动链接的单词,并且See ALOW引用仍然是活动链接 是否有一种已知的解决方法

使用Doxygen 1.8.4版:

当配置文件中的AUTOLINK_SUPPORT=NO时,由\sa(或@See)生成的HTML See部分引用不是指向所引用方法的活动链接。当AUTOLINK\u SUPPORT=YES时,\sa引用是预期的活动链接

这似乎是对doxygen行为的一个相对较新的更改:多年来,我一直在使用AUTOLINK_SUPPORT=NO,以避免在描述文本中标记所有可能导致使用“%”字符的不需要的自动链接的单词,并且See ALOW引用仍然是活动链接

是否有一种已知的解决方法,使\sa引用在仍然禁用全局自动链接\u支持的情况下保持活动链接

下面是一个简单的测试文件:

/** The Fooy class.
*/
class Fooy
{
public:

/** foo

    The alternative is {@link bar(int, int)const the bar method}

    @param  value   A value.
    @return The value incremented.
    @see bar(int, int)const
*/
int foo (const int value) const;

/** bar

    The alternative is {@link foo(const int)const the foo method}

    @param  value   A value.
    @param  number  A number.
    @return The value plus the number.
    @see foo(const int)const
*/
int bar (int value, int number) const;
};
使用自动生成的Doxyfile(doxygen-g)doxygen版本1.8.8,在没有任何警告的情况下生成预期的HTML结果:{@link bar(int,int)const the bar method}语法生成名为“the bar method”的链接(对于另一个@link也是如此),@see references生成具有方法签名的预期链接

如果Doxyfile更改为AUTOLINK_SUPPORT=NO doxygen,则现在生成的HTML中@see签名不再是链接,而是相同的

如果从第一个@link命令doxygen输出中删除了“bar方法”-

Fooy.hh:9: warning: unable to resolve link to `bar(int, int)' for \link command
生成的HTML使用单个单词“const”作为指向HTML/classFooy.HTML文件的链接,而不是方法签名和正确链接。但是,如果在方法签名的参数列表中删除逗号后的单个空格,则警告将消失,链接现在与完整签名文本正确。请注意,空格字符 第二个@link命令的foo参数列表中必须保留正确的签名,因此从命令中删除文本“foo方法”将始终导致doxygen进行错误的解析。恢复AUTOLINK_SUPPORT=YES不会更改此行为。这表明doxygen解析器中存在缺陷

回到最初的问题,当doxy文件中的AUTOLINK_SUPPORT=NO时,将@see引用作为HTML输出中的链接。如上所述,将方法签名放入{@link…}包装器内的@see命令失败(只有当方法签名没有空格字符时,它才能正常工作)。如果包装器被替换为新的@link@endlink语法(以及与其他{@link…}命令一起使用的新语法),那么来自doxygen的HTML输出是具有完整方法签名和正确链接的预期结果

因此,这个问题的答案是doxygen与以前的in-code命令语法不向后兼容。除非知道一些解决方法,否则必须编辑所有现有代码文件以适应对doxygen解析器的更改


叹气。

您是否尝试使用当前版本的doxygen(1.8.8)?是的,我尝试了doxygen版本1.8.8(doxygen-1.8.8.linux.bin.tar.gz)的当前二进制发行版并生成相同的结果。请注意,Doxygen文件是由Doxygen-g内部生成的,仅更改了AUTOLINK_支持选项。是否在函数前面尝试\ref?是。我尝试使用\ref和doxygen生成与\link命令相同的警告,以及相同的错误HTML输出。