• 【转】doxygen+graphviz生成工程中的类继承树及函数调用图


    转自----hequn8128

    在阅读代码量比较多的项目时,类的继承树和函数调用图能够直观地向我们显示类之间或者函数之间的各种关系,方便我们了解程序的整体框架,很多时候可以起到事半功倍的作用。这里尝试了用doxygen+graphviz生成工程中的类继承树和函数调用图的方法,总体来说操作比较方便。网上还有其他一些方法,比如eclipse插件还有Rational Software Rrchitect,对于eclipse插件,功能比较有限,而Rational Software Rrchitect软件装的时候老有问题,以后再尝试下。

    doxygen是一款用来生成项目文档的软件,类似于javadoc,但是比javadoc要强大,还可以对项目代码的结构进行分析。最初doxygen设计来分析c++代码,现在也支持如java, python, obj-c, php等语言。

    graphviz是一款展示图和网络结构的软件,用来绘制DOT语言脚本描述的图形。

    总的来说,就是用doxygen来生成结构,用graphviz来显示结构。

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

    首先,安装doxygen,可以在官网的download页面下载,下载doxygen-1.8.8-setup.exe,安装即可。软件集成了32位和64位安装包。然后,安装graphviz,官网下载地址,下载windows安装包。

    二、配置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.8
    
    #---------------------------------------------------------------------------
    # Project related configuration options
    #---------------------------------------------------------------------------
    DOXYFILE_ENCODING      = UTF-8
    PROJECT_NAME           = javautil
    PROJECT_NUMBER         = 
    PROJECT_BRIEF          = 
    PROJECT_LOGO           = 
    OUTPUT_DIRECTORY       = E:/doxygenWorkspace/javautil
    CREATE_SUBDIRS         = NO
    ALLOW_UNICODE_NAMES    = NO
    OUTPUT_LANGUAGE        = English
    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 
                             "The $name class"
    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   = YES
    OPTIMIZE_FOR_FORTRAN   = NO
    OPTIMIZE_OUTPUT_VHDL   = NO
    EXTENSION_MAPPING      = 
    MARKDOWN_SUPPORT       = YES
    AUTOLINK_SUPPORT       = YES
    BUILTIN_STL_SUPPORT    = NO
    CPP_CLI_SUPPORT        = NO
    SIP_SUPPORT            = NO
    IDL_PROPERTY_SUPPORT   = YES
    DISTRIBUTE_GROUP_DOC   = 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        = NO
    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
    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_FORMAT            = "$file:$line: $text"
    WARN_LOGFILE           = 
    #---------------------------------------------------------------------------
    # Configuration options related to the input files
    #---------------------------------------------------------------------------
    INPUT                  = E:/javatest
    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 
                             *.f90 
                             *.f 
                             *.for 
                             *.tcl 
                             *.vhd 
                             *.vhdl 
                             *.ucf 
                             *.qsf 
                             *.as 
                             *.js
    RECURSIVE              = NO
    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          = 
    #---------------------------------------------------------------------------
    # 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         = 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      = YES
    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_FILES      = 
    PDF_HYPERLINKS         = YES
    USE_PDFLATEX           = YES
    LATEX_BATCHMODE        = NO
    LATEX_HIDE_INDICES     = NO
    LATEX_SOURCE_CODE      = NO
    LATEX_BIB_STYLE        = plain
    #---------------------------------------------------------------------------
    # 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    = 
    #---------------------------------------------------------------------------
    # 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       = NO
    DOCBOOK_OUTPUT         = docbook
    DOCBOOK_PROGRAMLISTING = NO
    #---------------------------------------------------------------------------
    # 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         = YES
    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        = YES
    DOT_PATH               = "D:/Program Files (x86)/Graphviz2.38/bin"
    DOTFILE_DIRS           = 
    MSCFILE_DIRS           = 
    DIAFILE_DIRS           = 
    PLANTUML_JAR_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进行查看。选择Class->Class Hierarchy查看类的继承图。下图为java.util包中的类继承图的一部分,另存为可以查看大图。

  • 相关阅读:
    TCP/IP学习-链路层
    Linux下搭建Wordpress环境
    DiskMgr的限制项
    Win10系统Start Menu上的图标莫名消失
    powershell
    第一个页面的文本域中输入的值怎么在第二个页面中显示
    php 文本框里面显示数据库调出来的资料
    php代码
    php表单提交方法汇总
    php将SQL查询结果赋值给变量
  • 原文地址:https://www.cnblogs.com/chenyang920/p/5730149.html
Copyright © 2020-2023  润新知