-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Python call graph is not completely correct #8851
Comments
|
As a spin off I did a quick test with:
And here we see a self recursive relation for each function though this should only be the case for the
the analogous code for Cpp and Fortran loooks:
so with and extra Example: example.tar.gz It might be that this also causes the original problem @zlonqi has but this is hard to tell (and therfore the example is still wanted. as I don't see the original problem). |
Maybe it is reason. Thank you so much~ |
# doxygen -v
1.8.13 The small project is python.tar.gz class SawtoothSubmitter(sub.Submitter):
def __init__(self, ledger_config, *args, **kwargs):
super().__init__(ledger_config, *args, **kwargs)
# Sawtooth Specific Parameters.
self.wait = ledger_config.get('wait', 30.0) # submitter will wait 30 seconds to hear back from Sawtooth
# If no response, client to check back with Sawtooth about the status
#Sawtooth read helper
self.read_helper = PdoRegistryHelper(self.url) #registry helper for read transactions
# -----------------------------------------------------------------
def submit_json(self, json_input, address_family, **extra_params) :
# Get the write connect_helper. This cannot be attached to the class instance, since
# the sawtooth header signing key must be unique for each transaction.
# Previously, each class instance was used only for a single transaction,
# so this was not a problem. The current implementation permits an instance to be reused
key_str = extra_params.get('key_str', None) # this is the header signing key
if key_str is None:
txn_keys = keys.TransactionKeys()
key_str = txn_keys.txn_private
transaction_dependency_list = extra_params.get('transaction_dependency_list', None)
# Sawtooth connector supports a few extra parameters. We shall fix these in PDO
keyfile = None
auto_generate = False
exception_type = Exception
verbose = False
connect_helper = PdoClientConnectHelper(self.url, keyfile, key_str, auto_generate)
json_payload = json.dumps(json_input)
signature = connect_helper.\
execute_json_transaction(
json_payload,
address_family,
self.wait,
exception_type,
verbose,
transaction_dependency_list=transaction_dependency_list)
logger.debug("json: %s", json_payload)
logger.debug("signature: %s", signature)
return signature
def register_encalve(self,
enclave_verifying_key,
enclave_encryption_key,
proof_data,
registration_block_context,
organizational_info,
**extra_params):
json_input = JsonPayloadBuilder.build_enclave_registration_from_data(
enclave_verifying_key,
enclave_encryption_key,
proof_data,
registration_block_context,
organizational_info)
extra_params['key_str'] = self.pdo_signer.txn_private # for enclave registration, the eservice keys
# are used to sign the Sawtooth header
return self.submit_json(json_input, json_input['af'], **extra_params)
def register_contract(self,
contract_code_hash,
provisioning_service_ids,
**extra_params):
txn_keys = keys.TransactionKeys()
json_input = JsonPayloadBuilder.build_contract_registration_from_data(
self.pdo_signer.signing_key,
self.pdo_signer.verifying_key,
txn_keys.txn_public,
crypto.byte_array_to_base64(contract_code_hash),
provisioning_service_ids)
extra_params['key_str'] = txn_keys.txn_private
return self.submit_json(json_input, json_input['af'], **extra_params)
# -----------------------------------------------------------------
def add_enclave_to_contract(self,
contract_id,
enclave_info_quintuples,
**extra_params):
txn_keys = keys.TransactionKeys()
json_input = JsonPayloadBuilder.build_add_enclave_from_data(
self.pdo_signer.signing_key,
txn_keys.txn_public,
contract_id,
enclave_info_quintuples)
extra_params['key_str'] = txn_keys.txn_private
return self.submit_json(json_input, json_input['af'], **extra_params)
# -----------------------------------------------------------------
def ccl_initialize(self,
channel_keys,
contract_enclave_id,
enclave_signature,
contract_id,
message_hash,
current_state_hash,
contract_code_hash,
**extra_params):
json_input = JsonPayloadBuilder.build_ccl_transaction_from_data(
self.pdo_signer.signing_key,
self.pdo_signer.verifying_key,
'initialize',
channel_keys.txn_public,
contract_enclave_id,
enclave_signature,
contract_id,
crypto.byte_array_to_base64(message_hash),
crypto.byte_array_to_base64(current_state_hash),
"", # previous_state_hash,
"", # encyrpted root block. No longer stored in Sawtooth
[], # empty dependency_list
crypto.byte_array_to_base64(contract_code_hash))
# contract code hash is necessary for the pdo signature
extra_params['key_str'] = channel_keys.txn_private
return self.submit_json(json_input, json_input['af'], **extra_params) The call and caller is below But this is not entirely correct the configuration is follow as below, any suggestions will be useful, thank you~ # Doxyfile 1.8.13
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = "My Project"
PROJECT_NUMBER =
PROJECT_BRIEF =
PROJECT_LOGO =
OUTPUT_DIRECTORY = /root/doxygen/python
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
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 = /root/private-data-objects/python
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 = YES
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 = NO
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 = YES
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 = 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 = gif
INTERACTIVE_SVG = NO
DOT_PATH = /usr/bin/
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 |
The result with the 1.9.2 version looks like:
Note: you also have twice the |
ok, I've reinstall doxygen with v1.92 by source code, but it doesn't has |
The configuration file is basically the same as I used for the 1.8.13 version (but just updated it to 1.9.2 with |
ok, I use the v1.8.13 configuration , it breaks at |
Apparently the
|
ok, it replys |
I think that would be a good idea, Strange that you didn't have the problems when you executed your previous runs. |
Before I install v1.92, I've remove the older v1.8.13 with command |
I'm found the DOT_PATH is the path of |
I think you should use |
I'm sorry I typed the wrong word. I used |
We saw that in the `pycode.l` the `yyextra->insideBody` wasn't implemented contrary to e.g. `code.l` and `fortrancode.l` Thi omission has been corrected.
I've just pushed a proposed patch, pull request #8860 |
Please don't close, the pull request is still a proposed pull request and not in the master version / a release. |
issue #8851 Python call graph is not completely correct
Code has been integrated in master on GitHub (please don't close the issue as this will be done at the moment of an official release). |
That's great. I've tried it, it's perfect. Thank you very much~ |
This issue was previously marked 'fixed but not released', |
I used doxywizard to genarate call and caller graph for a large python project. call graph was not completely correct.
The result is a->b->c, But in fact there is no call relationship between them. Thank you so much~
The text was updated successfully, but these errors were encountered: