From 304e3e736e5aff7d57ecffd6381acfe23d84966d Mon Sep 17 00:00:00 2001 From: Om Santosh Suneri <142336291+omsuneri@users.noreply.github.com> Date: Thu, 9 Oct 2025 16:19:40 +0530 Subject: [PATCH] fix: cargo scanning failure Signed-off-by: Om Santosh Suneri <142336291+omsuneri@users.noreply.github.com> --- scanpipe/models.py | 7 ++++-- scanpipe/pipes/scancode.py | 46 +++++++++++++++++++++++++------------- 2 files changed, 35 insertions(+), 18 deletions(-) diff --git a/scanpipe/models.py b/scanpipe/models.py index 26d74303cb..bdf86ccc12 100644 --- a/scanpipe/models.py +++ b/scanpipe/models.py @@ -2997,7 +2997,10 @@ def parent(self, codebase=None): else: parent_path = self.compute_parent_directory() - return parent_path and self.project.codebaseresources.get(path=parent_path) + if parent_path: + with suppress(ObjectDoesNotExist): + return self.project.codebaseresources.get(path=parent_path) + return None def siblings(self, codebase=None): """ @@ -4184,7 +4187,7 @@ def create_from_data( if strip_datafile_path_root: segments = datafile_path.split("/") datafile_path = "/".join(segments[1:]) - datafile_resource = project.codebaseresources.get(path=datafile_path) + datafile_resource = project.codebaseresources.get_or_none(path=datafile_path) if datasource_id: dependency_data["datasource_id"] = datasource_id diff --git a/scanpipe/pipes/scancode.py b/scanpipe/pipes/scancode.py index 81ce29c13a..f70cae8e39 100644 --- a/scanpipe/pipes/scancode.py +++ b/scanpipe/pipes/scancode.py @@ -603,23 +603,37 @@ def assemble_package(resource, project, processed_paths): handler = get_package_handler(package_data) logger.info(f" Selected package handler: {handler.__name__}") - extracted_items = handler.assemble( - package_data=package_data, - resource=resource, - codebase=project, - package_adder=add_resource_to_package, - ) + try: + extracted_items = handler.assemble( + package_data=package_data, + resource=resource, + codebase=project, + package_adder=add_resource_to_package, + ) + except AttributeError as e: + if "'NoneType' object has no attribute 'path'" in str(e): + continue + raise + except Exception: + continue - for item in extracted_items: - logger.info(f" Processing item: {item}") - if isinstance(item, packagedcode_models.Package): - pipes.update_or_create_package(project, item.to_dict()) - elif isinstance(item, packagedcode_models.Dependency): - pipes.update_or_create_dependency(project, item.to_dict()) - elif isinstance(item, CodebaseResource): - processed_paths.add(item.path) - else: - logger.info(f"Unknown Package assembly item type: {item!r}") + try: + for item in extracted_items: + logger.info(f" Processing item: {item}") + if isinstance(item, packagedcode_models.Package): + pipes.update_or_create_package(project, item.to_dict()) + elif isinstance(item, packagedcode_models.Dependency): + pipes.update_or_create_dependency(project, item.to_dict()) + elif isinstance(item, CodebaseResource): + processed_paths.add(item.path) + else: + logger.info(f"Unknown Package assembly item type: {item!r}") + except AttributeError as e: + if "'NoneType' object has no attribute 'path'" in str(e): + continue + raise + except Exception: + continue def process_package_data(project, static_resolve=False):