Documentation 如何为调用图中的函数设置颜色?

Documentation 如何为调用图中的函数设置颜色?,documentation,doxygen,Documentation,Doxygen,doxygen调用图通常将单个函数着色为灰色,将调用树中的所有其他函数着色为白色。不幸的是,我需要为我的用例用特殊的颜色为几个函数着色。例如,下面的main.c /** *@file main.c */ ///@简短的Foos void foo(){} ///@周围的短酒吧 void bar(){foo();} ///@short-quoux-around void qux(){} ///@brief系统入口点 int main(){ foo(); bar(); quux(); } 与下面的D

doxygen调用图通常将单个函数着色为灰色,将调用树中的所有其他函数着色为白色。不幸的是,我需要为我的用例用特殊的颜色为几个函数着色。例如,下面的
main.c

/**
*@file main.c
*/
///@简短的Foos
void foo(){}
///@周围的短酒吧
void bar(){foo();}
///@short-quoux-around
void qux(){}
///@brief系统入口点
int main(){
foo();
bar();
quux();
}
与下面的Doxygen配置一起使用

EXTRACT_ALL            = YES
CALL_GRAPH             = YES
生成以下树:

虽然这在一般情况下是可以的,但一些内部规则需要将
bar
始终显示为橙色,因为这是一个“不安全”的函数。类似地,我必须将
foo
涂成teal,以表示它是安全的。我所设想的是


是否可以通过Doxygen命令在Doxygen生成的图形中设置颜色?例如,一些神奇的命令,比如不存在的
@dotnodecolor green
?还是需要手动对所有图形进行后期处理?

在doxygen中,无法设置节点颜色,因此很遗憾,您必须自己对相关图形进行后期处理

可能有办法通过重新定义
dot
命令来解决这个问题(这有点小气)

  • 读取doxygen点文件
  • 操作所需字段
  • 将文件写回
  • 运行real
    dot
    命令
通过
doxygen-d extcmd
可以看到调用中使用的参数,例如
dot

对于您的情况,后者的输出将是(
DOT\u IMAGE\u FORMAT=png
):

在这种情况下:
DOT\u IMAGE\u FORMAT=svg

Executing external command `dot ".../html/main_8c_a49a4b11e50430aa0a78de989ea99e082_cgraph.dot" -Tsvg -o ".../html/main_8c_a49a4b11e50430aa0a78de989ea99e082_cgraph.svg"`
Executing external command `dot ".../html/graph_legend.dot" -Tsvg -o ".../html/graph_legend.svg"`
Executing external command `dot ".../html/main_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.dot" -Tsvg -o ".../html/main_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.svg"`
Executing external command `dot ".../html/main_8c_a49a4b11e50430aa0a78de989ea99e082_cgraph.dot" -Tcmapx -o ".../html/main_8c_a49a4b11e50430aa0a78de989ea99e082_cgraph.map"`
Executing external command `dot ".../html/main_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.dot" -Tcmapx -o ".../html/main_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.map"`
Executing external command `dot ".../html/main_8c_a49a4b11e50430aa0a78de989ea99e082_cgraph.dot" -Tsvg -o ".../html/main_8c_a49a4b11e50430aa0a78de989ea99e082_cgraph.svg"`
Executing external command `dot ".../html/graph_legend.dot" -Tsvg -o ".../html/graph_legend.svg"`
Executing external command `dot ".../html/main_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.dot" -Tsvg -o ".../html/main_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.svg"`
Executing external command `dot ".../html/main_8c_a49a4b11e50430aa0a78de989ea99e082_cgraph.dot" -Tcmapx -o ".../html/main_8c_a49a4b11e50430aa0a78de989ea99e082_cgraph.map"`
Executing external command `dot ".../html/main_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.dot" -Tcmapx -o ".../html/main_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.map"`