Skip to content

Latest commit

 

History

History
479 lines (475 loc) · 14.1 KB

README.md

File metadata and controls

479 lines (475 loc) · 14.1 KB

Project Function Hierarchy

This script spiders through an entire project to find each function and visually display how each function calls other functions. This can be helpful to optimize a script after you realize how many times a function is called.

Example

A single function:

[epijunkie@bhost] ~/project# ./project-function-hierarchy.sh __info
   __info
      __return_pools_active
      __gvset_guest_pool
         __verify_valid_pool
            __setup
            __fault_detected_exit
               __log
               __log
            __fault_detected_exit
               __log
               __log
            __fault_detected_exit
               __log
               __log
            __fault_detected_exit
               __log
               __log
      __return_chyves_zfs_property_value
      __return_new_line_delimit_as_space_string
      __return_guest_list
      __load_guest_parameters
         __gvset_guest_pool
            __verify_valid_pool
               __setup
               __fault_detected_exit
                  __log
                  __log
               __fault_detected_exit
                  __log
                  __log
               __fault_detected_exit
                  __log
                  __log
               __fault_detected_exit
                  __log
                  __log
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_guest_dataset_mountpoint
      __get_guest_console_pid
      __return_guest_vmm_allocated
      __return_guest_bhyve_pid
      __return_rcboot_priority
         __return_chyves_zfs_property_value
      __gvset_first_disk
      __return_guest_disk_list
      __return_chyves_zfs_property_value
      __return_chyves_zfs_property_value

An entire project

[epijunkie@bhost] ~/project# ./project-function-hierarchy.sh
      __preflight_check
         __load_library_files
            __log
            __log
            __fault_detected_exit
               __log
               __log
         __fault_detected_exit
            __log
            __log
         __log
         __log
         __return_cpu_section_from_dmesg
         __return_cpu_section_from_dmesg
         __return_cpu_section_from_dmesg
         __log
         __log
         __log
         __return_cpu_section_from_dmesg
         __fault_detected_exit
            __log
            __log
         __gvset_primary_pool
            __verify_valid_pool
               __setup
               __fault_detected_exit
                  __log
                  __log
               __fault_detected_exit
                  __log
                  __log
               __fault_detected_exit
                  __log
                  __log
               __fault_detected_exit
                  __log
                  __log
         __log
         __fault_detected_exit
            __log
            __log
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_new_line_delimit_as_comma_string
         __return_guest_list
         __return_new_line_delimit_as_grep_string
         __return_guest_list
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __return_chyves_zfs_property_value
         __verify_kernel_module_loaded
            __verify_kernel_module_loaded - [WARNING] Infinite loop [WARNING]
            __fault_detected_exit
               __log
               __log
      __parse_cmd_ingress
         __parse_cmd_dataset
            __root_credentials_required
               __fault_detected_exit
                  __log
                  __log
            __verify_number_of_arguments
               __help
                  __version
               __fault_detected_exit
                  __log
                  __log
            __verify_valid_pool
               __setup
               __fault_detected_exit
                  __log
                  __log
               __fault_detected_exit
                  __log
                  __log
               __fault_detected_exit
                  __log
                  __log
               __fault_detected_exit
                  __log
                  __log
            __dataset_install
               __log
               __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __log
               __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __set_chyves_zfs_property
                  __log
               __log
               __log
               __resource_import
                  __verify_valid_dataset
                     __fault_detected_exit
                        __log
                        __log
                     __fault_detected_exit
                        __log
                        __log
                  __log
                  __log
                  __log
                  __log
                  __log
                  __log
                  __log
                  __log
                  __log
                  __log
                  __log
                  __resource_functions
                  __log
                  __log
                  __log
                  __verify_valid_dataset
                     __fault_detected_exit
                        __log
                        __log
                     __fault_detected_exit
                        __log
                        __log
                  __log
                  __log
                  __log
                  __log
                  __log
                  __log
                  __resource_functions
               __log
               __return_one_if_freenas
            __verify_valid_pool
               __setup
               __fault_detected_exit
                  __log
                  __log
               __fault_detected_exit
                  __log
                  __log
               __fault_detected_exit
                  __log
                  __log
               __fault_detected_exit
                  __log
                  __log
            __dataset_offline
            __verify_valid_pool
               __setup
               __fault_detected_exit
                  __log
                  __log
               __fault_detected_exit
                  __log
                  __log
               __fault_detected_exit
                  __log
                  __log
               __fault_detected_exit
                  __log
                  __log
            __dataset_online
            __verify_valid_pool
               __setup
               __fault_detected_exit
                  __log
                  __log
               __fault_detected_exit
                  __log
                  __log
               __fault_detected_exit
                  __log
                  __log
               __fault_detected_exit
                  __log
                  __log
            __dataset_promote
            __verify_valid_pool
               __setup
               __fault_detected_exit
                  __log
                  __log
               __fault_detected_exit
                  __log
                  __log
               __fault_detected_exit
                  __log
                  __log
               __fault_detected_exit
                  __log
                  __log
            __dataset_delete
            __verify_valid_pool
               __setup
               __fault_detected_exit
                  __log
                  __log
               __fault_detected_exit
                  __log
                  __log
               __fault_detected_exit
                  __log
                  __log
               __fault_detected_exit
                  __log
                  __log
            __dataset_upgrade
            __help
               __version
            __fault_detected_exit
               __log
               __log
         __fault_detected_exit
            __log
            __log
         __parse_cmd_resources
            __list_firmwares
            __list_iso
            __verify_number_of_arguments
               __help
                  __version
               __fault_detected_exit
                  __log
                  __log
            __verify_valid_dataset
               __fault_detected_exit
                  __log
                  __log
               __fault_detected_exit
                  __log
                  __log
            __resource_delete
               __log
            __verify_number_of_arguments
               __help
                  __version
               __fault_detected_exit
                  __log
                  __log
            __resource_import
               __verify_valid_dataset
                  __fault_detected_exit
                     __log
                     __log
                  __fault_detected_exit
                     __log
                     __log
               __log
               __log
               __log
               __log
               __log
               __log
               __log
               __log
               __log
               __log
               __log
               __resource_functions
               __log
               __log
               __log
               __verify_valid_dataset
                  __fault_detected_exit
                     __log
                     __log
                  __fault_detected_exit
                     __log
                     __log
               __log
               __log
               __log
               __log
               __log
               __log
               __resource_functions
            __verify_number_of_arguments
               __help
                  __version
               __fault_detected_exit
                  __log
                  __log
            __verify_valid_dataset
               __fault_detected_exit
                  __log
                  __log
               __fault_detected_exit
                  __log
                  __log
            __verify_valid_dataset
               __fault_detected_exit
                  __log
                  __log
               __fault_detected_exit
                  __log
                  __log
            __resource_rename
               __log
         __help
            __version
         __verify_number_of_arguments
            __help
               __version
...thousands more lines...