Skip to content

Commit 09bea1c

Browse files
committed
fix: only enable enricher when required extractor is enabled
1 parent 3cbfa1a commit 09bea1c

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

cmd/osv-scanner/scan/source/__snapshots__/command_test.snap

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4975,6 +4975,16 @@ Total 1 package affected by 4 known vulnerabilities (2 Critical, 1 High, 1 Mediu
49754975

49764976
---
49774977

4978+
[TestCommand_Transitive/transitive_requirements_enricher_requires_enabled_requirements_extractor - 1]
4979+
Scanning dir ./testdata/locks-requirements/requirements-transitive.txt
4980+
4981+
---
4982+
4983+
[TestCommand_Transitive/transitive_requirements_enricher_requires_enabled_requirements_extractor - 2]
4984+
No package sources found, --help for usage information.
4985+
4986+
---
4987+
49784988
[TestCommand_Transitive/uses_native_data_source_for_requirements.txt - 1]
49794989
Scanning dir ./testdata/locks-requirements/requirements.txt
49804990
Scanned <rootdir>/testdata/locks-requirements/requirements.txt file and found 3 packages

cmd/osv-scanner/scan/source/command_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1197,6 +1197,11 @@ func TestCommand_Transitive(t *testing.T) {
11971197
Args: []string{"", "source", "--no-resolve", "./testdata/locks-requirements/requirements-transitive.txt"},
11981198
Exit: 1,
11991199
},
1200+
{
1201+
Name: "transitive_requirements_enricher_requires_enabled_requirements_extractor",
1202+
Args: []string{"", "source", "--experimental-disable-plugins=python/requirements", "./testdata/locks-requirements/requirements-transitive.txt"},
1203+
Exit: 128,
1204+
},
12001205
}
12011206

12021207
for _, tt := range tests {

pkg/osvscanner/scan.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
transitivedependencyrequirements "github.com/google/osv-scalibr/enricher/transitivedependency/requirements"
1616
"github.com/google/osv-scalibr/extractor"
1717
"github.com/google/osv-scalibr/extractor/filesystem/language/java/pomxmlnet"
18+
"github.com/google/osv-scalibr/extractor/filesystem/language/python/requirements"
1819
"github.com/google/osv-scalibr/fs"
1920
"github.com/google/osv-scalibr/inventory"
2021
"github.com/google/osv-scalibr/plugin"
@@ -47,6 +48,18 @@ func configurePlugins(plugins []plugin.Plugin, accessors ExternalAccessors, acti
4748
}
4849
}
4950

51+
func isRequirementsExtractorEnabled(plugins []plugin.Plugin) bool {
52+
for _, plug := range plugins {
53+
_, ok := plug.(*requirements.Extractor)
54+
55+
if ok {
56+
return true
57+
}
58+
}
59+
60+
return false
61+
}
62+
5063
func getPlugins(defaultPlugins []string, accessors ExternalAccessors, actions ScannerActions) []plugin.Plugin {
5164
if !actions.PluginsNoDefaults {
5265
actions.PluginsEnabled = append(actions.PluginsEnabled, defaultPlugins...)
@@ -62,7 +75,8 @@ func getPlugins(defaultPlugins []string, accessors ExternalAccessors, actions Sc
6275

6376
plugins := scalibrplugin.Resolve(actions.PluginsEnabled, actions.PluginsDisabled)
6477

65-
if accessors.DependencyClients[osvschema.EcosystemPyPI] != nil {
78+
// todo: use Enricher.RequiredPlugins to check this generically
79+
if accessors.DependencyClients[osvschema.EcosystemPyPI] != nil && isRequirementsExtractorEnabled(plugins) {
6680
plugins = append(plugins, transitivedependencyrequirements.NewEnricher(accessors.DependencyClients[osvschema.EcosystemPyPI]))
6781
}
6882

0 commit comments

Comments
 (0)