RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login

    Static Class Diagram and Call Graph for ES

    Scheduled Pinned Locked Moved Ideas and Development
    emulationstatiohow todevelopmentsource
    1 Posts 1 Posters 327 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • LolonoisL
      Lolonois
      last edited by

      Mini How-To

      This will create a navigatable class diagram and method call graph from the EmulationStation source tree.

      1. Have EmulationStation sources cloned in some directory at your Pi (or Linux host/WSL: Adjust package manager commands below accordingly to your Linux distro).
      2. Change to that directory
      3. Run sudo apt install doxygen graphviz
      4. Run doxygen -g
      5. Save patchfile from below in the same folder, e.g. as Doxyfile.ES.
      6. Apply patch patch < Doxyfile.ES.
      7. Review/adjust settings for OUTPUT_DIRECTORY, NUM_PROC_THREADS and DOT_NUM_THREADS in Doxyfile
      8. Now you are done with the one-time operations.
      9. Run doxygen and let it finish. Rerun this command if sources are changed.
      10. Open index.html in <OUTPUT_DIRECTORY>/html/ in a browser.
      11. Will present you something like this. (NB: Call graph is more below, not in caption):

      Doxysample_scaled.jpg

      Here is the patch (settings for Doxygen):

      --- Doxyfile    2022-11-18 12:25:55.958663648 +0100
      +++ Doxyfile.ES 2022-11-18 12:33:04.935927849 +0100
      @@ -32,7 +32,7 @@
       # title of most generated pages and in a few other places.
       # The default value is: My Project.
       
      -PROJECT_NAME           = "My Project"
      +PROJECT_NAME           = "EmulationStation"
       
       # The PROJECT_NUMBER tag can be used to enter a project or revision number. This
       # could be handy for archiving the generated documentation or if some version
      @@ -58,7 +58,8 @@
       # entered, it will be relative to the location where doxygen was started. If
       # left blank the current directory will be used.
       
      -OUTPUT_DIRECTORY       =
      +# adjust to needs
      +OUTPUT_DIRECTORY       = /home/pi/RetroPie
       
       # If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
       # directories (in 2 levels) under the output directory of each output format and
      @@ -471,7 +472,7 @@
       # DOT_NUM_THREADS setting.
       # Minimum value: 0, maximum value: 32, default value: 1.
       
      -NUM_PROC_THREADS       = 1
      +NUM_PROC_THREADS       = 4
       
       #---------------------------------------------------------------------------
       # Build related configuration options
      @@ -485,31 +486,31 @@
       # normally produced when WARNINGS is set to YES.
       # The default value is: NO.
       
      -EXTRACT_ALL            = NO
      +EXTRACT_ALL            = YES
       
       # If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
       # be included in the documentation.
       # The default value is: NO.
       
      -EXTRACT_PRIVATE        = NO
      +EXTRACT_PRIVATE        = YES
       
       # If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual
       # methods of a class will be included in the documentation.
       # The default value is: NO.
       
      -EXTRACT_PRIV_VIRTUAL   = NO
      +EXTRACT_PRIV_VIRTUAL   = YES
       
       # If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
       # scope will be included in the documentation.
       # The default value is: NO.
       
      -EXTRACT_PACKAGE        = NO
      +EXTRACT_PACKAGE        = YES
       
       # If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
       # included in the documentation.
       # The default value is: NO.
       
      -EXTRACT_STATIC         = NO
      +EXTRACT_STATIC         = YES
       
       # If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
       # locally in source files will be included in the documentation. If set to NO,
      @@ -810,7 +811,7 @@
       # will automatically be disabled.
       # The default value is: YES.
       
      -WARN_IF_UNDOCUMENTED   = YES
      +WARN_IF_UNDOCUMENTED   = NO
       
       # If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
       # potential errors in the documentation, such as not documenting some parameters
      @@ -852,7 +853,7 @@
       # messages should be written. If left blank the output is written to standard
       # error (stderr).
       
      -WARN_LOGFILE           =
      +WARN_LOGFILE           = /tmp/doxygen.log
       
       #---------------------------------------------------------------------------
       # Configuration options related to the input files
      @@ -864,7 +865,7 @@
       # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
       # Note: If this tag is empty the current directory is searched.
       
      -INPUT                  =
      +INPUT                  = es-app/src,es-core/src,external/nanosvg,external/pugixml
       
       # This tag can be used to specify the character encoding of the source files
       # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
      @@ -943,7 +944,7 @@
       # be searched for input files as well.
       # The default value is: NO.
       
      -RECURSIVE              = NO
      +RECURSIVE              = YES
       
       # The EXCLUDE tag can be used to specify files and/or directories that should be
       # excluded from the INPUT source files. This way you can easily exclude a
      @@ -1074,13 +1075,13 @@
       # also VERBATIM_HEADERS is set to NO.
       # The default value is: NO.
       
      -SOURCE_BROWSER         = NO
      +SOURCE_BROWSER         = YES
       
       # Setting the INLINE_SOURCES tag to YES will include the body of functions,
       # classes and enums directly into the documentation.
       # The default value is: NO.
       
      -INLINE_SOURCES         = NO
      +INLINE_SOURCES         = YES
       
       # Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
       # special comment blocks from generated source code fragments. Normal C, C++ and
      @@ -1565,7 +1566,7 @@
       # The default value is: NO.
       # This tag requires that the tag GENERATE_HTML is set to YES.
       
      -DISABLE_INDEX          = NO
      +DISABLE_INDEX          = YES
       
       # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
       # structure should be generated to display hierarchical information. If the tag
      @@ -1582,7 +1583,7 @@
       # The default value is: NO.
       # This tag requires that the tag GENERATE_HTML is set to YES.
       
      -GENERATE_TREEVIEW      = NO
      +GENERATE_TREEVIEW      = YES
       
       # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
       # doxygen will group on one line in the generated HTML documentation.
      @@ -1790,7 +1791,7 @@
       # If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
       # The default value is: YES.
       
      -GENERATE_LATEX         = YES
      +GENERATE_LATEX         = NO
       
       # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
       # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
      @@ -2364,7 +2365,7 @@
       # Minimum value: 0, maximum value: 32, default value: 0.
       # This tag requires that the tag HAVE_DOT is set to YES.
       
      -DOT_NUM_THREADS        = 0
      +DOT_NUM_THREADS        = 4
       
       # When you want a differently looking font in the dot files that doxygen
       # generates you can specify the font name using DOT_FONTNAME. You need to make
      @@ -2493,7 +2494,7 @@
       # The default value is: NO.
       # This tag requires that the tag HAVE_DOT is set to YES.
       
      -CALL_GRAPH             = NO
      +CALL_GRAPH             = YES
       
       # If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
       # dependency graph for every global function or class method.
      @@ -2505,7 +2506,7 @@
       # The default value is: NO.
       # This tag requires that the tag HAVE_DOT is set to YES.
       
      -CALLER_GRAPH           = NO
      +CALLER_GRAPH           = YES
       
       # If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
       # hierarchy of all classes instead of a textual one.
      
      1 Reply Last reply Reply Quote 1
      • LolonoisL Lolonois referenced this topic on
      • First post
        Last post

      Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

      Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.