mirror of
https://github.com/securego/gosec.git
synced 2024-12-26 04:25:52 +00:00
7f8f654235
* Removed old way of initializing analyzers * Added the new analyzer to the rest of the default analyzers * Fixed small bug in the rule * Removed the test for the new analyzer from the file responsible for testing the rules * Merged the diffrent examples into 1 variable * Added tests for the analyzer * Removed code that was used for testing rules, but it was used to test the analyzer
66 lines
1.8 KiB
Go
66 lines
1.8 KiB
Go
package analyzers_test
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
|
|
. "github.com/onsi/ginkgo/v2"
|
|
. "github.com/onsi/gomega"
|
|
|
|
"github.com/securego/gosec/v2"
|
|
"github.com/securego/gosec/v2/analyzers"
|
|
"github.com/securego/gosec/v2/testutils"
|
|
)
|
|
|
|
var _ = Describe("gosec analyzers", func() {
|
|
var (
|
|
logger *log.Logger
|
|
config gosec.Config
|
|
analyzer *gosec.Analyzer
|
|
runner func(string, []testutils.CodeSample)
|
|
buildTags []string
|
|
tests bool
|
|
)
|
|
|
|
BeforeEach(func() {
|
|
logger, _ = testutils.NewLogger()
|
|
config = gosec.NewConfig()
|
|
analyzer = gosec.NewAnalyzer(config, tests, false, false, 1, logger)
|
|
runner = func(analyzerId string, samples []testutils.CodeSample) {
|
|
for n, sample := range samples {
|
|
analyzer.Reset()
|
|
analyzer.SetConfig(sample.Config)
|
|
analyzer.LoadAnalyzers(analyzers.Generate(false, analyzers.NewAnalyzerFilter(false, analyzerId)).AnalyzersInfo())
|
|
pkg := testutils.NewTestPackage()
|
|
defer pkg.Close()
|
|
for i, code := range sample.Code {
|
|
pkg.AddFile(fmt.Sprintf("sample_%d_%d.go", n, i), code)
|
|
}
|
|
err := pkg.Build()
|
|
Expect(err).ShouldNot(HaveOccurred())
|
|
Expect(pkg.PrintErrors()).Should(BeZero())
|
|
err = analyzer.Process(buildTags, pkg.Path)
|
|
Expect(err).ShouldNot(HaveOccurred())
|
|
issues, _, _ := analyzer.Report()
|
|
if len(issues) != sample.Errors {
|
|
fmt.Println(sample.Code)
|
|
}
|
|
Expect(issues).Should(HaveLen(sample.Errors))
|
|
}
|
|
}
|
|
})
|
|
|
|
Context("report correct errors for all samples", func() {
|
|
It("should detect integer conversion overflow", func() {
|
|
runner("G115", testutils.SampleCodeG115)
|
|
})
|
|
|
|
It("should detect hardcoded nonce/IV", func() {
|
|
runner("G407", testutils.SampleCodeG407)
|
|
})
|
|
|
|
It("should detect out of bounds slice access", func() {
|
|
runner("G602", testutils.SampleCodeG602)
|
|
})
|
|
})
|
|
})
|