Qt 从doxygen类图中隐藏公共基类
我正在使用doxygen为基于Qt的解决方案生成类图。不管是好是坏,我们的大多数类都继承自QObject,这导致了一些糟糕的类图,QObject在左边,所有类都指向它 有没有办法让doxygen忽略类图中的QObject 我已经尝试了Qt 从doxygen类图中隐藏公共基类,qt,doxygen,Qt,Doxygen,我正在使用doxygen为基于Qt的解决方案生成类图。不管是好是坏,我们的大多数类都继承自QObject,这导致了一些糟糕的类图,QObject在左边,所有类都指向它 有没有办法让doxygen忽略类图中的QObject 我已经尝试了EXCLUDE_SYMBOLS=QObject,但没有任何区别(我相信这只会使QObject的文档无法生成) 我们实际上并没有使用文档本身,因此,只要我们得到一个更漂亮的类图版本,即使是会导致一些奇怪行为的中断解决方案也是可以接受的。不幸的是,解决此问题的唯一方法都
EXCLUDE_SYMBOLS=QObject
,但没有任何区别(我相信这只会使QObject的文档无法生成)
我们实际上并没有使用文档本身,因此,只要我们得到一个更漂亮的类图版本,即使是会导致一些奇怪行为的中断解决方案也是可以接受的。不幸的是,解决此问题的唯一方法都是将代码的某些部分隐藏到Doxygen 预处理器指令
class Derived :
#ifndef SKIP_THIS
public Base
#endif /* SKIP_THIS */
{
...
}
然后确保在Doxyfile中设置了以下两个指令:
PREDEFINED = SKIP_THIS
ENABLE_PREPROCESSING = YES
条件句
class Derived :
#ifndef SKIP_THIS
public Base
#endif /* SKIP_THIS */
{
...
}
这可以通过在代码中使用@cond
和@endcond
标记来实现。示例如下所示:
class Derived :
/// @cond SKIP_THIS
public Base
/// @endcond
{
...
}
内部标签
要忽略代码的一部分,只需使用\internal
和\endinternal
将适当的部分括起来即可。确保在配置文件中将INTERNAL_DOCS
设置为NO
排除_符号
这将从您的文档中排除特定的单词regex。也可以通过使用GUI进行设置
"expert > input"
因此,可以使用适当的正则表达式排除特定名称空间中的所有内容,在本例中是通过星号*
。比如说,
class X: public my_space::Y {
...
}
EXCLUDE_SYMBOLS = my_space::*
我也遇到了这个问题。我的解决方案是一个骇人听闻的破解,但确实达到了预期的效果。基本上,我有一个冒名顶替者
dot
,它实际上是一个shell脚本,用于查找标记为QObject
的节点,并将它们从输入文件中删除。通过将dotu路径
DoxyFile
值设置到放置视点替用程序脚本的目录,可以让Doxygen使用视点替用程序dot
#! /bin/bash
# This hack is a wrapper to GraphViz dot that removes any nodes that
# are contained in the following list.
LABELS_TO_FILTER="QObject"
ARGS=$@
for ARG in ${ARGS}
do
if [ -e ${ARG} ]
then
FILENAME=$(basename "${ARG}")
EXT="${FILENAME##*.}"
if [ ${EXT} == "dot" ]
then
DOT_FILE=${ARG}
for LABEL_TO_FILTER in ${LABELS_TO_FILTER}
do
NODE_NAME=$(grep "label=\"${LABEL_TO_FILTER}\"" ${DOT_FILE} | awk '{print $1}')
if [[ ! -z "${NODE_NAME}" ]]
then
echo "${NODE_NAME} is labelled ${LABEL_TO_FILTER}, filtering..."
sed -i "/${NODE_NAME}/d" ${DOT_FILE}
fi
done
break
fi
fi
done
dot ${ARGS}