doxygen AUTOLINK_SUPPORT和sa

时间:2014-09-13 09:33:56

标签: doxygen

使用Doxygen版本1.8.4:

当配置文件中的AUTOLINK_SUPPORT = NO时,由

这似乎是对doxygen行为的一个相对较新的变化:我多年来一直在使用AUTOLINK_SUPPORT = NO,以避免必须在描述文本中标记所有单词,否则会导致与&的不希望的自动链接#39;%'字符,参见参考文献仍然是活动链接。

是否有一种已知的解决方法可以使\ sa引用保持活动链接,同时仍禁用全局AUTOLINK_SUPPORT?

这是一个简单的测试文件:

/** 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}语法导致链接命名"条形方法" (对于其他@link也是如此),并且@see引用了具有方法签名的预期链接。

如果Doxyfile被更改,那么AUTOLINK_SUPPORT = NO doxygen现在生成HTML,其中@see签名不再是链接,但在其他方面是相同的。

如果"条形法"从第一个@link命令doxygen输出 -

中删除
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解析器存在缺陷。

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

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

叹息。

0 个答案:

没有答案