diff --git a/pkg/fanal/analyzer/language/dotnet/nuget/nuget.go b/pkg/fanal/analyzer/language/dotnet/nuget/nuget.go index 045241db73d6..b7303bcc4d89 100644 --- a/pkg/fanal/analyzer/language/dotnet/nuget/nuget.go +++ b/pkg/fanal/analyzer/language/dotnet/nuget/nuget.go @@ -71,6 +71,11 @@ func (a *nugetLibraryAnalyzer) PostAnalyze(_ context.Context, input analyzer.Pos return xerrors.Errorf("NuGet parse error: %w", err) } + // nuget file doesn't contain dependencies + if app == nil { + return nil + } + for i, lib := range app.Libraries { license, ok := foundLicenses[lib.ID] if !ok { diff --git a/pkg/fanal/analyzer/language/dotnet/nuget/nuget_test.go b/pkg/fanal/analyzer/language/dotnet/nuget/nuget_test.go index 7dae7368e115..3db74b377fc3 100644 --- a/pkg/fanal/analyzer/language/dotnet/nuget/nuget_test.go +++ b/pkg/fanal/analyzer/language/dotnet/nuget/nuget_test.go @@ -166,6 +166,22 @@ func Test_nugetibraryAnalyzer_Analyze(t *testing.T) { }, }, }, + { + name: "happy path lock file without dependencies.", + dir: "testdata/lock-without-deps", + env: map[string]string{ + "HOME": "testdata/repository", + }, + want: &analyzer.AnalysisResult{}, + }, + { + name: "sad path", + dir: "testdata/sad", + env: map[string]string{ + "HOME": "testdata/repository", + }, + want: &analyzer.AnalysisResult{}, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { diff --git a/pkg/fanal/analyzer/language/dotnet/nuget/testdata/lock-without-deps/packages.lock.json b/pkg/fanal/analyzer/language/dotnet/nuget/testdata/lock-without-deps/packages.lock.json new file mode 100644 index 000000000000..2fca7fd98a29 --- /dev/null +++ b/pkg/fanal/analyzer/language/dotnet/nuget/testdata/lock-without-deps/packages.lock.json @@ -0,0 +1,6 @@ +{ + "version": 1, + "dependencies": { + "net6.0": {} + } +} \ No newline at end of file