DOT_GRAPH_MAX_NODES和MAX_DOT_GRAPH_DEPTH

时间:2021-08-23 02:29:21

    比来这段时间在阅读 RTKLIB的源代码,目前是将 pntpos.c文件的部分看完了,筹备写一份文档记录下这些代码的用处、措置惩罚惩罚过程、理论公式来源、注意事项,本身还没有弄大白的处所。目前的想法是把每一个函数都做成一个名片,这个名片内则包罗代码的成果说明、参数说明、函数挪用关系图、整体措置惩罚惩罚过程、注意事项和本身的疑惑这几个部分。而在这个名片内呈现的其他函数(包孕在文字和挪用关系图中呈现的)则使用超链接链接到其他函数名片内。然而我并不想本身去手工绘制函数挪用关系图,于是就百度了一下,这才发明关于接口文档、说明文档、函数挪用关系图这些帮助开发文档早就有人做了专门的软件来高效、有组织地来解决这些问题了。

关于函数挪用关系图,在 Linux和 Windows平台下也都有差此外解决方案,搜索一下就能找到很多与之相关的技术文档。目前我是只使用 Windows,这里着重说一下 Windows里中合适的解决方案。

  1. 直接使用 VS自带的关系图成果生成挪用关系图。对付 windows平台下经常使用 VS来开发的人来说,这毫无疑问是最简单的要领。不过我并没有用这种要领,一来我看了一下,觉得生成的代码图不够直不雅观,有些函数会被折叠;二来目前我并不筹算使用 VS来编译 RTKLIB源码,我此刻一直是用 NotePad++来编纂、阅读源码的。

  2. source insight,好是好,可是在别人的博客中看到,说在SI生成的挪用关系图中,当两个函数挪用同一个底层函数时,该底层函数会分袂呈此刻两个函数挪用图的下面,因此这种要领也不能最快的看出那些经常被挪用的底层函数,觉得同一幅图中,同一个函数多次呈现,看起来就很冗余,也欠好。

  3.Doxygen+GraphViz+HtmlHelp,这也是我写这篇博客所想要介绍的。详细内容见 《Windows平台下Doxygen+GraphViz+HtmlHelp自动生成函数挪用关系图》(原来想直接转载该篇博客的,但又懒得去联系其作者,遂置一链接于此),下面主要写几个我再凭据这篇博客操纵时遇到的问题。

    1. 给出的Graphviz的下载目录不成用,,如下图1所示。这个问题不难,本身去官网下载 windows版本的就行。这里我下载的版本如图2所示,要注意的是这个不是安置包,直接就可以用,所以某些情况下需要本身设置环境变量。而对付本次和 Doxygen联用,则不需要,因为在新建 Doxygen工程时,需要指定 Graphviz的地址目录。

图 1

DOT_GRAPH_MAX_NODES和MAX_DOT_GRAPH_DEPTH

图 2

2. 生成的挪用图中有时候会包罗太多底层函数,使整个图反而变得看上去很乱,如下图3所示。这可以在 Doxygen中进行设置,与之有关的参数有两个,DOT_GRAPH_MAX_NODES和 MAX_DOT_GRAPH_DEPTH,分袂控制图中的最大节点数和节点深度,如下图 4所示。节点深度默认为 0,即不进行深度控制,用户可自行设置。只是需要注意,深度也不宜太小。好比对付图 5中的挪用关系,当设置深度为 1时,C就不会显示出来。

DOT_GRAPH_MAX_NODES和MAX_DOT_GRAPH_DEPTH

图 3 MAX_DOT_GRAPH_DEPTH=0时的函数挪用图

DOT_GRAPH_MAX_NODES和MAX_DOT_GRAPH_DEPTH

图 4 

DOT_GRAPH_MAX_NODES和MAX_DOT_GRAPH_DEPTH

图 5

我也是今天才发明这个神奇的对象,所关于源码分析工具也就先说到这里。前段时间在筹算开始阅读 RTKLIB源码时就在想,阅读开源代码有没有什么“黑科技”,其时出于懒惰没有去查找相关的资料,此刻吃了苦头才发明,只能说“技术上可以偷懒,想法上不能偷懒”。干工作都有前人的经验和技巧,善用此道,才华真正偷得到懒。

    (最后,我还是要吐槽一下博客园的编纂界面和显示界面,横向上太宽了,真的不如 cmd Markdown写起来便利、美不雅观)