Skip to content

Commit cef12ef

Browse files
ahamilton55knqyf263
authored andcommitted
Improves package analysis errors usability (fanal#24)
- Adds a new analyzer error for "no packages detected" - Package analyzers now return the common "no packages detected" error - Returned errors from the package analyzers are checked against the common "no packages detected" errors and filters those out. Other errors will now be passed back to the user for debugging.
1 parent 3a38594 commit cef12ef

File tree

5 files changed

+10
-12
lines changed

5 files changed

+10
-12
lines changed

analyzer/analyzer.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ var (
2525
ErrUnknownOS = xerrors.New("Unknown OS")
2626
// ErrPkgAnalysis occurs when the analysis of packages is failed.
2727
ErrPkgAnalysis = xerrors.New("Failed to analyze packages")
28+
// ErrNoPkgsDetected occurs when the required files for an OS package manager are not detected
29+
ErrNoPkgsDetected = xerrors.New("No packages detected")
2830
)
2931

3032
type OSAnalyzer interface {
@@ -158,10 +160,12 @@ func GetOS(filesMap extractor.FileMap) (OS, error) {
158160
func GetPackages(filesMap extractor.FileMap) ([]Package, error) {
159161
for _, analyzer := range pkgAnalyzers {
160162
pkgs, err := analyzer.Analyze(filesMap)
161-
if err != nil {
163+
164+
// Differentiate between a package manager not being found and another error
165+
if err != nil && err == ErrNoPkgsDetected {
162166
continue
163167
}
164-
return pkgs, nil
168+
return pkgs, err
165169
}
166170
return nil, ErrPkgAnalysis
167171
}

analyzer/pkg/apk/apk.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ import (
55
"bytes"
66
"log"
77

8-
"github.com/pkg/errors"
9-
108
"github.com/knqyf263/fanal/analyzer"
119
"github.com/knqyf263/fanal/extractor"
1210

@@ -33,7 +31,7 @@ func (a alpinePkgAnalyzer) Analyze(fileMap extractor.FileMap) (pkgs []analyzer.P
3331
detected = true
3432
}
3533
if !detected {
36-
return pkgs, errors.New("No package detected")
34+
return pkgs, analyzer.ErrNoPkgsDetected
3735
}
3836
return pkgs, nil
3937
}

analyzer/pkg/dpkg/dpkg.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import (
88
"strings"
99

1010
mapset "github.com/deckarep/golang-set"
11-
"golang.org/x/xerrors"
1211

1312
"github.com/knqyf263/fanal/analyzer"
1413
"github.com/knqyf263/fanal/extractor"
@@ -39,7 +38,7 @@ func (a debianPkgAnalyzer) Analyze(fileMap extractor.FileMap) (pkgs []analyzer.P
3938
detected = true
4039
}
4140
if !detected {
42-
return pkgs, xerrors.New("no package detected")
41+
return pkgs, analyzer.ErrNoPkgsDetected
4342
}
4443
return pkgs, nil
4544
}

analyzer/pkg/rpm/rpm.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ import (
55
"os"
66
"path/filepath"
77

8-
"golang.org/x/xerrors"
9-
108
"github.com/knqyf263/fanal/analyzer"
119
"github.com/knqyf263/fanal/extractor"
1210
rpmdb "github.com/knqyf263/go-rpmdb/pkg"
@@ -31,7 +29,7 @@ func (a rpmPkgAnalyzer) Analyze(fileMap extractor.FileMap) (pkgs []analyzer.Pack
3129
detected = true
3230
}
3331
if !detected {
34-
return nil, xerrors.New("No package detected")
32+
return nil, analyzer.ErrNoPkgsDetected
3533
}
3634
return pkgs, err
3735
}

analyzer/pkg/rpmcmd/rpm.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package rpmcmd
22

33
import (
44
"bufio"
5-
"errors"
65
"io/ioutil"
76
"os"
87
"os/exec"
@@ -35,7 +34,7 @@ func (a rpmCmdPkgAnalyzer) Analyze(fileMap extractor.FileMap) (pkgs []analyzer.P
3534
detected = true
3635
}
3736
if !detected {
38-
return pkgs, errors.New("No package detected")
37+
return pkgs, analyzer.ErrNoPkgsDetected
3938
}
4039
return pkgs, err
4140
}

0 commit comments

Comments
 (0)