@@ -24,6 +24,7 @@ import (
2424 . "github.com/onsi/ginkgo/v2"
2525 . "github.com/onsi/gomega"
2626 "github.com/securego/gosec/v2"
27+ "github.com/securego/gosec/v2/analyzers"
2728 "github.com/securego/gosec/v2/rules"
2829 "github.com/securego/gosec/v2/testutils"
2930 "golang.org/x/tools/go/packages"
@@ -1110,6 +1111,7 @@ var _ = Describe("Analyzer", func() {
11101111 It ("should be able to scan generated files if NOT excluded when using the analyzes" , func () {
11111112 customAnalyzer := gosec .NewAnalyzer (nil , true , false , false , 1 , logger )
11121113 customAnalyzer .LoadRules (rules .Generate (false ).RulesInfo ())
1114+ customAnalyzer .LoadAnalyzers (analyzers .Generate (false ).AnalyzersInfo ())
11131115 pkg := testutils .NewTestPackage ()
11141116 defer pkg .Close ()
11151117 pkg .AddFile ("foo.go" , `
@@ -1132,6 +1134,7 @@ var _ = Describe("Analyzer", func() {
11321134 It ("should be able to skip generated files if excluded when using the analyzes" , func () {
11331135 customAnalyzer := gosec .NewAnalyzer (nil , true , true , false , 1 , logger )
11341136 customAnalyzer .LoadRules (rules .Generate (false ).RulesInfo ())
1137+ customAnalyzer .LoadAnalyzers (analyzers .Generate (false ).AnalyzersInfo ())
11351138 pkg := testutils .NewTestPackage ()
11361139 defer pkg .Close ()
11371140 pkg .AddFile ("foo.go" , `
@@ -1499,6 +1502,44 @@ var _ = Describe("Analyzer", func() {
14991502 Expect (issues [0 ].Suppressions [0 ].Justification ).To (Equal ("Globally suppressed." ))
15001503 })
15011504
1505+ It ("should not report an error if the analyzer is not included" , func () {
1506+ sample := testutils .SampleCodeG602 [0 ]
1507+ source := sample .Code [0 ]
1508+ analyzer .LoadAnalyzers (analyzers .Generate (true , analyzers .NewAnalyzerFilter (false , "G115" )).AnalyzersInfo ())
1509+
1510+ controlPackage := testutils .NewTestPackage ()
1511+ defer controlPackage .Close ()
1512+ controlPackage .AddFile ("cipher.go" , source )
1513+ err := controlPackage .Build ()
1514+ Expect (err ).ShouldNot (HaveOccurred ())
1515+ err = analyzer .Process (buildTags , controlPackage .Path )
1516+ Expect (err ).ShouldNot (HaveOccurred ())
1517+ controlIssues , _ , _ := analyzer .Report ()
1518+ Expect (controlIssues ).Should (HaveLen (sample .Errors ))
1519+ Expect (controlIssues [0 ].Suppressions ).To (HaveLen (1 ))
1520+ Expect (controlIssues [0 ].Suppressions [0 ].Kind ).To (Equal ("external" ))
1521+ Expect (controlIssues [0 ].Suppressions [0 ].Justification ).To (Equal ("Globally suppressed." ))
1522+ })
1523+
1524+ It ("should not report an error if the analyzer is excluded" , func () {
1525+ sample := testutils .SampleCodeG602 [0 ]
1526+ source := sample .Code [0 ]
1527+ analyzer .LoadAnalyzers (analyzers .Generate (true , analyzers .NewAnalyzerFilter (true , "G602" )).AnalyzersInfo ())
1528+
1529+ controlPackage := testutils .NewTestPackage ()
1530+ defer controlPackage .Close ()
1531+ controlPackage .AddFile ("cipher.go" , source )
1532+ err := controlPackage .Build ()
1533+ Expect (err ).ShouldNot (HaveOccurred ())
1534+ err = analyzer .Process (buildTags , controlPackage .Path )
1535+ Expect (err ).ShouldNot (HaveOccurred ())
1536+ issues , _ , _ := analyzer .Report ()
1537+ Expect (issues ).Should (HaveLen (sample .Errors ))
1538+ Expect (issues [0 ].Suppressions ).To (HaveLen (1 ))
1539+ Expect (issues [0 ].Suppressions [0 ].Kind ).To (Equal ("external" ))
1540+ Expect (issues [0 ].Suppressions [0 ].Justification ).To (Equal ("Globally suppressed." ))
1541+ })
1542+
15021543 It ("should track multiple suppressions if the violation is multiply suppressed" , func () {
15031544 sample := testutils .SampleCodeG101 [0 ]
15041545 source := sample .Code [0 ]
0 commit comments