diff --git a/.github/workflows/mypy.yml b/.github/workflows/mypy.yml index 0102b6aab..9dbded0b6 100644 --- a/.github/workflows/mypy.yml +++ b/.github/workflows/mypy.yml @@ -21,6 +21,9 @@ jobs: - name: Install Dependencies run: | pip install mypy types-PyYAML + - name: Install FI as modules + run: | + cd src && pip install . - name: mypy run: | cd src && mypy --ignore-missing-imports -m main diff --git a/src/fuzz_introspector/frontends/frontend_cpp.py b/src/fuzz_introspector/frontends/frontend_cpp.py index 5863a8e95..a17658b2b 100644 --- a/src/fuzz_introspector/frontends/frontend_cpp.py +++ b/src/fuzz_introspector/frontends/frontend_cpp.py @@ -152,7 +152,10 @@ def __init__(self, root: Node, tree_sitter_lang: Language, def function_source_code_as_text(self) -> str: """Returns the source code the function.""" - return self.root.text.decode() + if self.root and self.root.text: + return self.root.text.decode() + + return '' def _extract_pointer_array_from_type( self, param_name: Node) -> tuple[int, int, Node]: @@ -364,9 +367,9 @@ def _traverse_node_instr_count(node: Node) -> int: def _process_invoke(self, expr: Node, project) -> list[tuple[str, int, int]]: """Internal helper for processing the function invocation statement.""" - # logger.debug('Handling invoke statmenet: %s', expr.text.decode()) # logger.debug('Current namespace: %s', self.namespace_or_class) - logger.debug('Processing invoke: %s', expr.text.decode()) + logger.debug('Processing invoke: %s', + expr.text.decode() if expr.text else '') callsites = [] target_name: str = '' @@ -480,7 +483,8 @@ def _process_field_expr_return_type(self, field_expr: Node, def _process_callsites(self, stmt: Node, project) -> list[tuple[str, int, int]]: """Process and store the callsites of the function.""" - logger.debug('Processing callsite: %s', stmt.text.decode()) + logger.debug('Processing callsite: %s', + stmt.text.decode() if stmt.text else '') callsites = [] # Call statement @@ -536,7 +540,7 @@ def _process_callsites(self, stmt: Node, except AttributeError: var_name = None - if not var_name: + if not var_name or not var_name.text: logger.debug('Could not extract necessary attributes') return []