Skip to content

Commit 92c9c22

Browse files
committed
Update Java D2D Pipeline to Include Checksum Mapped Sources for Accurate Java Mapping #1854
Signed-off-by: Chin Yeung Li <[email protected]>
1 parent cbb8679 commit 92c9c22

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

scanpipe/pipes/d2d.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -192,9 +192,15 @@ def map_java_to_class(project, logger=None):
192192
Map to/ compiled Java .class(es) to from/ .java source using Java fully
193193
qualified paths and indexing from/ .java files.
194194
"""
195-
project_files = project.codebaseresources.files().no_status()
195+
project_files = project.codebaseresources.files()
196+
# Collect all files from "from_codebase", even if they already have a
197+
# status or are mapped. This is necessary because the deploy codebase
198+
# may contain sources that match "from_codebase" via checksum. If those
199+
# checksum-matched files are excluded from mapping, it can result in
200+
# .class files failing to resolve. See
201+
# https://github.com/aboutcode-org/scancode.io/issues/1854#issuecomment-3273472895
196202
from_resources = project_files.from_codebase()
197-
to_resources = project_files.to_codebase().has_no_relation()
203+
to_resources = project_files.to_codebase().no_status().has_no_relation()
198204

199205
to_resources_dot_class = to_resources.filter(extension=".class")
200206
from_resources_dot_java = (
@@ -205,7 +211,6 @@ def map_java_to_class(project, logger=None):
205211
)
206212
to_resource_count = to_resources_dot_class.count()
207213
from_resource_count = from_resources_dot_java.count()
208-
209214
if not from_resource_count:
210215
logger("No .java resources to map.")
211216
return
@@ -270,11 +275,7 @@ def find_java_packages(project, logger=None):
270275
Note: we use the same API as the ScanCode scans by design
271276
"""
272277
from_java_resources = (
273-
project.codebaseresources.files()
274-
.no_status()
275-
.from_codebase()
276-
.has_no_relation()
277-
.filter(extension=".java")
278+
project.codebaseresources.files().from_codebase().filter(extension=".java")
278279
)
279280

280281
if logger:

0 commit comments

Comments
 (0)