5454from scanpipe .models import CodebaseRelation
5555from scanpipe .models import CodebaseResource
5656from scanpipe .models import convert_glob_to_django_regex
57+ from scanpipe .pipes import d2d_config
5758from scanpipe .pipes import flag
5859from scanpipe .pipes import get_resource_diff_ratio
5960from scanpipe .pipes import js
@@ -1463,6 +1464,20 @@ def match_resources_with_no_java_source(project, logger=None):
14631464 )
14641465
14651466
1467+ def ignore_unmapped_resources_from_config (project , patterns_to_ignore , logger = None ):
1468+ """Ignore unmapped resources for a project using `patterns_to_ignore`."""
1469+ ignored_resources_count = flag .flag_ignored_patterns (
1470+ codebaseresources = project .codebaseresources .to_codebase ().no_status (),
1471+ patterns = patterns_to_ignore ,
1472+ status = flag .IGNORED_FROM_CONFIG ,
1473+ )
1474+ if logger :
1475+ logger (
1476+ f"Ignoring { ignored_resources_count :,d} to/ resources with "
1477+ "ecosystem specific configurations."
1478+ )
1479+
1480+
14661481def match_unmapped_resources (project , matched_extensions = None , logger = None ):
14671482 """
14681483 Match resources with empty status to PurlDB, if unmatched
@@ -1925,7 +1940,10 @@ def map_rust_binaries_with_symbols(project, logger=None):
19251940 )
19261941
19271942 # Collect source symbols from rust source files
1928- rust_from_resources = from_resources .filter (extension = ".rs" )
1943+ rust_config = d2d_config .get_ecosystem_config (ecosystem = "Rust" )
1944+ rust_from_resources = from_resources .filter (
1945+ extension__in = rust_config .source_symbol_extensions
1946+ )
19291947
19301948 map_binaries_with_symbols (
19311949 project = project ,
@@ -1945,7 +1963,10 @@ def map_elfs_binaries_with_symbols(project, logger=None):
19451963 )
19461964
19471965 # Collect source symbols from elf related source files
1948- elf_from_resources = from_resources .filter (extension__in = [".c" , ".cpp" , ".h" ])
1966+ elf_config = d2d_config .get_ecosystem_config (ecosystem = "Elf" )
1967+ elf_from_resources = from_resources .filter (
1968+ extension__in = elf_config .source_symbol_extensions
1969+ )
19491970
19501971 map_binaries_with_symbols (
19511972 project = project ,
@@ -1968,8 +1989,9 @@ def map_macho_binaries_with_symbols(project, logger=None):
19681989 )
19691990
19701991 # Collect source symbols from macos related source files
1992+ macos_config = d2d_config .get_ecosystem_config (ecosystem = "MacOS" )
19711993 mac_from_resources = from_resources .filter (
1972- extension__in = [ ".c" , ".cpp" , ".h" , ".m" , ".swift" ]
1994+ extension__in = macos_config . source_symbol_extensions ,
19731995 )
19741996
19751997 map_binaries_with_symbols (
@@ -1990,8 +2012,9 @@ def map_winpe_binaries_with_symbols(project, logger=None):
19902012 )
19912013
19922014 # Collect source symbols from windows related source files
2015+ windows_config = d2d_config .get_ecosystem_config (ecosystem = "Windows" )
19932016 windows_from_resources = from_resources .filter (
1994- extension__in = [ ".c" , ".cpp" , ".h" , ".cs" ]
2017+ extension__in = windows_config . source_symbol_extensions ,
19952018 )
19962019
19972020 map_binaries_with_symbols (
@@ -2057,16 +2080,17 @@ def map_javascript_symbols(project, logger=None):
20572080 """Map deployed JavaScript, TypeScript to its sources using symbols."""
20582081 project_files = project .codebaseresources .files ()
20592082
2083+ js_config = d2d_config .get_ecosystem_config (ecosystem = "JavaScript" )
20602084 javascript_to_resources = (
20612085 project_files .to_codebase ()
20622086 .has_no_relation ()
2063- .filter (extension__in = [ ".ts" , ".js" ] )
2087+ .filter (extension__in = js_config . source_symbol_extensions )
20642088 )
20652089
20662090 javascript_from_resources = (
20672091 project_files .from_codebase ()
20682092 .exclude (path__contains = "/test/" )
2069- .filter (extension__in = [ ".ts" , ".js" ] )
2093+ .filter (extension__in = js_config . source_symbol_extensions )
20702094 )
20712095
20722096 if not (javascript_from_resources .exists () and javascript_to_resources .exists ()):
0 commit comments