• doxygen+ graphviz 开源工具生成源码调用树的wiki


      

      当拿到一含有大量代码的工程怎么看?!这时一个好的代码分析工具非常有用,网上有很多开源工具,但资料都参差不齐,偶然发现doxygen+ graphviz这两工具非常棒,使用工具直接生成函数调用链图,帮助分析整个项目方法的用法以及功能,然后可以方便的分析代码,生成相应的函数调用图

    下面是我安装使用过程记录下来了 ps:安装了好几遍后的一个最简洁版的安装过程

    一、软件安装。(环境:win10 64bit)

      首先,安装doxygen,可以在官网的download页面下载,下载doxygen最新安装包,安装即可。软件集成了32位和64位安装包。然后,安装graphviz,官网下载地址,下载windows安装包。(我这边环境是windows的,也支持mac 类linux系统的版本)

    二、配置doxygen。(graphviz安装好后不需要其他配置操作)

    doxygen打开的页面如下图所示,有三个配置选项卡:wizard,expert,run。

    1)wizard选项卡。

    project)step1中先设置doxygen生成文档的工作空间,step2中设置要生成文档的工程名字,源代码的目录,是否递归处理源代码,还有生成文档存放的位置。

    mode)中选择要处理的语言

    output)略

    Diagrams)勾选Use do tool from the GraphViz package,下面的复选框也全勾上。

    2)Expert选项卡。

    build)中主要勾选EXTRACE_ALL, EXTRACE_PRIVATE, EXTRACE_STATIC, EXTRACE_LOCAL_CALSSES, EXTRACE_LOCAL_METHODS

    Doc)中勾选MUL_LOOK,  设置DOT_PATH即doc.exe的位置,位于graphviz安装路径下的bin目录下。(这里比较关键,我一开始没设置路径,识别不出graphviz的地址,继承关系解析出来了,但是图没画出来)。

    3)Run选项卡

    可以查看Show configuration的配置。以下是我的配置。

    # Doxyfile 1.8.14

    
    
    #---------------------------------------------------------------------------
    # Project related configuration options
    #---------------------------------------------------------------------------
    DOXYFILE_ENCODING      = UTF-8
    PROJECT_NAME           = teleinfo-IDIS
    PROJECT_NUMBER         = 
    PROJECT_BRIEF          = 
    PROJECT_LOGO           = 
    OUTPUT_DIRECTORY       = C:UsershaocmDesktopIDIS-codeCallback
    CREATE_SUBDIRS         = NO
    ALLOW_UNICODE_NAMES    = NO
    OUTPUT_LANGUAGE        = Chinese
    BRIEF_MEMBER_DESC      = YES
    REPEAT_BRIEF           = YES
    ABBREVIATE_BRIEF       = "The $name class" 
                             "The $name widget" 
                             "The $name file" 
                             is 
                             provides 
                             specifies 
                             contains 
                             represents 
                             a 
                             an 
                             the
    ALWAYS_DETAILED_SEC    = NO
    INLINE_INHERITED_MEMB  = NO
    FULL_PATH_NAMES        = YES
    STRIP_FROM_PATH        = 
    STRIP_FROM_INC_PATH    = 
    SHORT_NAMES            = NO
    JAVADOC_AUTOBRIEF      = NO
    QT_AUTOBRIEF           = NO
    MULTILINE_CPP_IS_BRIEF = NO
    INHERIT_DOCS           = YES
    SEPARATE_MEMBER_PAGES  = NO
    TAB_SIZE               = 4
    ALIASES                = 
    TCL_SUBST              = 
    OPTIMIZE_OUTPUT_FOR_C  = NO
    OPTIMIZE_OUTPUT_JAVA   = NO
    OPTIMIZE_FOR_FORTRAN   = NO
    OPTIMIZE_OUTPUT_VHDL   = NO
    EXTENSION_MAPPING      = 
    MARKDOWN_SUPPORT       = YES
    TOC_INCLUDE_HEADINGS   = 0
    AUTOLINK_SUPPORT       = YES
    BUILTIN_STL_SUPPORT    = NO
    CPP_CLI_SUPPORT        = NO
    SIP_SUPPORT            = NO
    IDL_PROPERTY_SUPPORT   = YES
    DISTRIBUTE_GROUP_DOC   = NO
    GROUP_NESTED_COMPOUNDS = NO
    SUBGROUPING            = YES
    INLINE_GROUPED_CLASSES = NO
    INLINE_SIMPLE_STRUCTS  = NO
    TYPEDEF_HIDES_STRUCT   = NO
    LOOKUP_CACHE_SIZE      = 0
    #---------------------------------------------------------------------------
    # Build related configuration options
    #---------------------------------------------------------------------------
    EXTRACT_ALL            = YES
    EXTRACT_PRIVATE        = YES
    EXTRACT_PACKAGE        = YES
    EXTRACT_STATIC         = YES
    EXTRACT_LOCAL_CLASSES  = YES
    EXTRACT_LOCAL_METHODS  = YES
    EXTRACT_ANON_NSPACES   = NO
    HIDE_UNDOC_MEMBERS     = NO
    HIDE_UNDOC_CLASSES     = NO
    HIDE_FRIEND_COMPOUNDS  = NO
    HIDE_IN_BODY_DOCS      = NO
    INTERNAL_DOCS          = NO
    CASE_SENSE_NAMES       = NO
    HIDE_SCOPE_NAMES       = NO
    HIDE_COMPOUND_REFERENCE= NO
    SHOW_INCLUDE_FILES     = YES
    SHOW_GROUPED_MEMB_INC  = NO
    FORCE_LOCAL_INCLUDES   = NO
    INLINE_INFO            = YES
    SORT_MEMBER_DOCS       = YES
    SORT_BRIEF_DOCS        = NO
    SORT_MEMBERS_CTORS_1ST = NO
    SORT_GROUP_NAMES       = NO
    SORT_BY_SCOPE_NAME     = NO
    STRICT_PROTO_MATCHING  = NO
    GENERATE_TODOLIST      = YES
    GENERATE_TESTLIST      = YES
    GENERATE_BUGLIST       = YES
    GENERATE_DEPRECATEDLIST= YES
    ENABLED_SECTIONS       = 
    MAX_INITIALIZER_LINES  = 30
    SHOW_USED_FILES        = YES
    SHOW_FILES             = YES
    SHOW_NAMESPACES        = YES
    FILE_VERSION_FILTER    = 
    LAYOUT_FILE            = 
    CITE_BIB_FILES         = 
    #---------------------------------------------------------------------------
    # Configuration options related to warning and progress messages
    #---------------------------------------------------------------------------
    QUIET                  = NO
    WARNINGS               = YES
    WARN_IF_UNDOCUMENTED   = YES
    WARN_IF_DOC_ERROR      = YES
    WARN_NO_PARAMDOC       = NO
    WARN_AS_ERROR          = NO
    WARN_FORMAT            = "$file:$line: $text"
    WARN_LOGFILE           = 
    #---------------------------------------------------------------------------
    # Configuration options related to the input files
    #---------------------------------------------------------------------------
    INPUT                  = D:hsrs-master
    INPUT_ENCODING         = UTF-8
    FILE_PATTERNS          = *.c 
                             *.cc 
                             *.cxx 
                             *.cpp 
                             *.c++ 
                             *.java 
                             *.ii 
                             *.ixx 
                             *.ipp 
                             *.i++ 
                             *.inl 
                             *.idl 
                             *.ddl 
                             *.odl 
                             *.h 
                             *.hh 
                             *.hxx 
                             *.hpp 
                             *.h++ 
                             *.cs 
                             *.d 
                             *.php 
                             *.php4 
                             *.php5 
                             *.phtml 
                             *.inc 
                             *.m 
                             *.markdown 
                             *.md 
                             *.mm 
                             *.dox 
                             *.py 
                             *.pyw 
                             *.f90 
                             *.f95 
                             *.f03 
                             *.f08 
                             *.f 
                             *.for 
                             *.tcl 
                             *.vhd 
                             *.vhdl 
                             *.ucf 
                             *.qsf
    RECURSIVE              = YES
    EXCLUDE                = 
    EXCLUDE_SYMLINKS       = NO
    EXCLUDE_PATTERNS       = 
    EXCLUDE_SYMBOLS        = 
    EXAMPLE_PATH           = 
    EXAMPLE_PATTERNS       = *
    EXAMPLE_RECURSIVE      = NO
    IMAGE_PATH             = 
    INPUT_FILTER           = 
    FILTER_PATTERNS        = 
    FILTER_SOURCE_FILES    = NO
    FILTER_SOURCE_PATTERNS = 
    USE_MDFILE_AS_MAINPAGE = 
    #---------------------------------------------------------------------------
    # Configuration options related to source browsing
    #---------------------------------------------------------------------------
    SOURCE_BROWSER         = NO
    INLINE_SOURCES         = NO
    STRIP_CODE_COMMENTS    = YES
    REFERENCED_BY_RELATION = NO
    REFERENCES_RELATION    = NO
    REFERENCES_LINK_SOURCE = YES
    SOURCE_TOOLTIPS        = YES
    USE_HTAGS              = NO
    VERBATIM_HEADERS       = YES
    CLANG_ASSISTED_PARSING = NO
    CLANG_OPTIONS          = 
    CLANG_COMPILATION_DATABASE_PATH= 0
    #---------------------------------------------------------------------------
    # Configuration options related to the alphabetical class index
    #---------------------------------------------------------------------------
    ALPHABETICAL_INDEX     = YES
    COLS_IN_ALPHA_INDEX    = 5
    IGNORE_PREFIX          = 
    #---------------------------------------------------------------------------
    # Configuration options related to the HTML output
    #---------------------------------------------------------------------------
    GENERATE_HTML          = YES
    HTML_OUTPUT            = html
    HTML_FILE_EXTENSION    = .html
    HTML_HEADER            = 
    HTML_FOOTER            = 
    HTML_STYLESHEET        = 
    HTML_EXTRA_STYLESHEET  = 
    HTML_EXTRA_FILES       = 
    HTML_COLORSTYLE_HUE    = 220
    HTML_COLORSTYLE_SAT    = 100
    HTML_COLORSTYLE_GAMMA  = 80
    HTML_TIMESTAMP         = NO
    HTML_DYNAMIC_MENUS     = YES
    HTML_DYNAMIC_SECTIONS  = NO
    HTML_INDEX_NUM_ENTRIES = 100
    GENERATE_DOCSET        = NO
    DOCSET_FEEDNAME        = "Doxygen generated docs"
    DOCSET_BUNDLE_ID       = org.doxygen.Project
    DOCSET_PUBLISHER_ID    = org.doxygen.Publisher
    DOCSET_PUBLISHER_NAME  = Publisher
    GENERATE_HTMLHELP      = NO
    CHM_FILE               = 
    HHC_LOCATION           = 
    GENERATE_CHI           = NO
    CHM_INDEX_ENCODING     = 
    BINARY_TOC             = NO
    TOC_EXPAND             = NO
    GENERATE_QHP           = NO
    QCH_FILE               = 
    QHP_NAMESPACE          = org.doxygen.Project
    QHP_VIRTUAL_FOLDER     = doc
    QHP_CUST_FILTER_NAME   = 
    QHP_CUST_FILTER_ATTRS  = 
    QHP_SECT_FILTER_ATTRS  = 
    QHG_LOCATION           = 
    GENERATE_ECLIPSEHELP   = NO
    ECLIPSE_DOC_ID         = org.doxygen.Project
    DISABLE_INDEX          = NO
    GENERATE_TREEVIEW      = NO
    ENUM_VALUES_PER_LINE   = 4
    TREEVIEW_WIDTH         = 250
    EXT_LINKS_IN_WINDOW    = NO
    FORMULA_FONTSIZE       = 10
    FORMULA_TRANSPARENT    = YES
    USE_MATHJAX            = NO
    MATHJAX_FORMAT         = HTML-CSS
    MATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest
    MATHJAX_EXTENSIONS     = 
    MATHJAX_CODEFILE       = 
    SEARCHENGINE           = YES
    SERVER_BASED_SEARCH    = NO
    EXTERNAL_SEARCH        = NO
    SEARCHENGINE_URL       = 
    SEARCHDATA_FILE        = searchdata.xml
    EXTERNAL_SEARCH_ID     = 
    EXTRA_SEARCH_MAPPINGS  = 
    #---------------------------------------------------------------------------
    # Configuration options related to the LaTeX output
    #---------------------------------------------------------------------------
    GENERATE_LATEX         = YES
    LATEX_OUTPUT           = latex
    LATEX_CMD_NAME         = latex
    MAKEINDEX_CMD_NAME     = makeindex
    COMPACT_LATEX          = NO
    PAPER_TYPE             = a4
    EXTRA_PACKAGES         = 
    LATEX_HEADER           = 
    LATEX_FOOTER           = 
    LATEX_EXTRA_STYLESHEET = 
    LATEX_EXTRA_FILES      = 
    PDF_HYPERLINKS         = YES
    USE_PDFLATEX           = YES
    LATEX_BATCHMODE        = NO
    LATEX_HIDE_INDICES     = NO
    LATEX_SOURCE_CODE      = NO
    LATEX_BIB_STYLE        = plain
    LATEX_TIMESTAMP        = NO
    #---------------------------------------------------------------------------
    # Configuration options related to the RTF output
    #---------------------------------------------------------------------------
    GENERATE_RTF           = NO
    RTF_OUTPUT             = rtf
    COMPACT_RTF            = NO
    RTF_HYPERLINKS         = NO
    RTF_STYLESHEET_FILE    = 
    RTF_EXTENSIONS_FILE    = 
    RTF_SOURCE_CODE        = NO
    #---------------------------------------------------------------------------
    # Configuration options related to the man page output
    #---------------------------------------------------------------------------
    GENERATE_MAN           = NO
    MAN_OUTPUT             = man
    MAN_EXTENSION          = .3
    MAN_SUBDIR             = 
    MAN_LINKS              = NO
    #---------------------------------------------------------------------------
    # Configuration options related to the XML output
    #---------------------------------------------------------------------------
    GENERATE_XML           = NO
    XML_OUTPUT             = xml
    XML_PROGRAMLISTING     = YES
    #---------------------------------------------------------------------------
    # Configuration options related to the DOCBOOK output
    #---------------------------------------------------------------------------
    GENERATE_DOCBOOK       = YES
    DOCBOOK_OUTPUT         = D:soft-tooldoxygen
    DOCBOOK_PROGRAMLISTING = YES
    #---------------------------------------------------------------------------
    # Configuration options for the AutoGen Definitions output
    #---------------------------------------------------------------------------
    GENERATE_AUTOGEN_DEF   = NO
    #---------------------------------------------------------------------------
    # Configuration options related to the Perl module output
    #---------------------------------------------------------------------------
    GENERATE_PERLMOD       = NO
    PERLMOD_LATEX          = NO
    PERLMOD_PRETTY         = YES
    PERLMOD_MAKEVAR_PREFIX = 
    #---------------------------------------------------------------------------
    # Configuration options related to the preprocessor
    #---------------------------------------------------------------------------
    ENABLE_PREPROCESSING   = YES
    MACRO_EXPANSION        = NO
    EXPAND_ONLY_PREDEF     = NO
    SEARCH_INCLUDES        = YES
    INCLUDE_PATH           = 
    INCLUDE_FILE_PATTERNS  = 
    PREDEFINED             = 
    EXPAND_AS_DEFINED      = 
    SKIP_FUNCTION_MACROS   = YES
    #---------------------------------------------------------------------------
    # Configuration options related to external references
    #---------------------------------------------------------------------------
    TAGFILES               = 
    GENERATE_TAGFILE       = 
    ALLEXTERNALS           = NO
    EXTERNAL_GROUPS        = YES
    EXTERNAL_PAGES         = YES
    PERL_PATH              = /usr/bin/perl
    #---------------------------------------------------------------------------
    # Configuration options related to the dot tool
    #---------------------------------------------------------------------------
    CLASS_DIAGRAMS         = NO
    MSCGEN_PATH            = 
    DIA_PATH               = 
    HIDE_UNDOC_RELATIONS   = YES
    HAVE_DOT               = YES
    DOT_NUM_THREADS        = 0
    DOT_FONTNAME           = Helvetica
    DOT_FONTSIZE           = 10
    DOT_FONTPATH           = 
    CLASS_GRAPH            = YES
    COLLABORATION_GRAPH    = YES
    GROUP_GRAPHS           = YES
    UML_LOOK               = YES
    UML_LIMIT_NUM_FIELDS   = 10
    TEMPLATE_RELATIONS     = NO
    INCLUDE_GRAPH          = YES
    INCLUDED_BY_GRAPH      = YES
    CALL_GRAPH             = YES
    CALLER_GRAPH           = YES
    GRAPHICAL_HIERARCHY    = YES
    DIRECTORY_GRAPH        = YES
    DOT_IMAGE_FORMAT       = png
    INTERACTIVE_SVG        = NO
    DOT_PATH               = D:soft-toolGraphviz2.38in
    DOTFILE_DIRS           = 
    MSCFILE_DIRS           = 
    DIAFILE_DIRS           = 
    PLANTUML_JAR_PATH      = 
    PLANTUML_CFG_FILE      = 
    PLANTUML_INCLUDE_PATH  = 
    DOT_GRAPH_MAX_NODES    = 50
    MAX_DOT_GRAPH_DEPTH    = 0
    DOT_TRANSPARENT        = NO
    DOT_MULTI_TARGETS      = NO
    GENERATE_LEGEND        = YES
    DOT_CLEANUP            = YES


    点Run doxygen即可开始解析并生成类之间的关系图。
    点Show HTML output进行查看。

    可以直接点击类 文件等进去看生成的调用图和属性说明。
  • 相关阅读:
    阿里云张新涛:连接产业上下游,构建XR协作生态
    从中间件到分布式数据库,PolarDBX的透明之路
    零信任策略下K8s安全监控最佳实践(K+)
    了解3D世界的黑魔法纯Java构造一个简单的3D渲染引擎
    EMR重磅发布智能运维诊断系统(EMR Doctor)——开源大数据平台运维利器
    PolarDBX拆分键推荐
    实战指南 | Serverless 架构下的应用开发
    【20220804】一定要遵守规则
    【20220810】给二宝取名
    【20220806】连岳摘抄
  • 原文地址:https://www.cnblogs.com/zhangzl/p/9282667.html
Copyright © 2020-2023  润新知