mirror of
https://github.com/securego/gosec.git
synced 2026-01-15 01:33:41 +08:00
Extract the issue in its own package
This commit is contained in:
committed by
Cosmin Cojocar
parent
31e63276f1
commit
de2c6a36fa
@@ -26,6 +26,7 @@ import (
|
||||
|
||||
"github.com/securego/gosec/v2"
|
||||
"github.com/securego/gosec/v2/cmd/vflag"
|
||||
"github.com/securego/gosec/v2/issue"
|
||||
"github.com/securego/gosec/v2/report"
|
||||
"github.com/securego/gosec/v2/rules"
|
||||
)
|
||||
@@ -265,22 +266,22 @@ func saveReport(filename, format string, rootPaths []string, reportInfo *gosec.R
|
||||
return nil
|
||||
}
|
||||
|
||||
func convertToScore(value string) (gosec.Score, error) {
|
||||
func convertToScore(value string) (issue.Score, error) {
|
||||
value = strings.ToLower(value)
|
||||
switch value {
|
||||
case "low":
|
||||
return gosec.Low, nil
|
||||
return issue.Low, nil
|
||||
case "medium":
|
||||
return gosec.Medium, nil
|
||||
return issue.Medium, nil
|
||||
case "high":
|
||||
return gosec.High, nil
|
||||
return issue.High, nil
|
||||
default:
|
||||
return gosec.Low, fmt.Errorf("provided value '%s' not valid. Valid options: low, medium, high", value)
|
||||
return issue.Low, fmt.Errorf("provided value '%s' not valid. Valid options: low, medium, high", value)
|
||||
}
|
||||
}
|
||||
|
||||
func filterIssues(issues []*gosec.Issue, severity gosec.Score, confidence gosec.Score) ([]*gosec.Issue, int) {
|
||||
result := make([]*gosec.Issue, 0)
|
||||
func filterIssues(issues []*issue.Issue, severity issue.Score, confidence issue.Score) ([]*issue.Issue, int) {
|
||||
result := make([]*issue.Issue, 0)
|
||||
trueIssues := 0
|
||||
for _, issue := range issues {
|
||||
if issue.Severity >= severity && issue.Confidence >= confidence {
|
||||
@@ -293,7 +294,7 @@ func filterIssues(issues []*gosec.Issue, severity gosec.Score, confidence gosec.
|
||||
return result, trueIssues
|
||||
}
|
||||
|
||||
func exit(issues []*gosec.Issue, errors map[string][]gosec.Error, noFail bool) {
|
||||
func exit(issues []*issue.Issue, errors map[string][]gosec.Error, noFail bool) {
|
||||
nsi := 0
|
||||
for _, issue := range issues {
|
||||
if len(issue.Suppressions) == 0 {
|
||||
|
||||
@@ -5,7 +5,7 @@ import (
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/securego/gosec/v2"
|
||||
"github.com/securego/gosec/v2/issue"
|
||||
)
|
||||
|
||||
// handle ranges
|
||||
@@ -14,7 +14,7 @@ func extractLineNumber(s string) int {
|
||||
return lineNumber
|
||||
}
|
||||
|
||||
type sortBySeverity []*gosec.Issue
|
||||
type sortBySeverity []*issue.Issue
|
||||
|
||||
func (s sortBySeverity) Len() int { return len(s) }
|
||||
|
||||
@@ -34,6 +34,6 @@ func (s sortBySeverity) Less(i, j int) bool {
|
||||
func (s sortBySeverity) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
|
||||
|
||||
// sortIssues sorts the issues by severity in descending order
|
||||
func sortIssues(issues []*gosec.Issue) {
|
||||
func sortIssues(issues []*issue.Issue) {
|
||||
sort.Sort(sortBySeverity(issues))
|
||||
}
|
||||
|
||||
@@ -5,22 +5,22 @@ import (
|
||||
|
||||
. "github.com/onsi/ginkgo/v2"
|
||||
. "github.com/onsi/gomega"
|
||||
"github.com/securego/gosec/v2"
|
||||
"github.com/securego/gosec/v2/issue"
|
||||
)
|
||||
|
||||
var defaultIssue = gosec.Issue{
|
||||
var defaultIssue = issue.Issue{
|
||||
File: "/home/src/project/test.go",
|
||||
Line: "1",
|
||||
Col: "1",
|
||||
RuleID: "ruleID",
|
||||
What: "test",
|
||||
Confidence: gosec.High,
|
||||
Severity: gosec.High,
|
||||
Confidence: issue.High,
|
||||
Severity: issue.High,
|
||||
Code: "1: testcode",
|
||||
Cwe: gosec.GetCweByRule("G101"),
|
||||
Cwe: issue.GetCweByRule("G101"),
|
||||
}
|
||||
|
||||
func createIssue() gosec.Issue {
|
||||
func createIssue() issue.Issue {
|
||||
return defaultIssue
|
||||
}
|
||||
|
||||
@@ -29,8 +29,8 @@ func TestRules(t *testing.T) {
|
||||
RunSpecs(t, "Sort issues Suite")
|
||||
}
|
||||
|
||||
func firstIsGreater(less, greater *gosec.Issue) {
|
||||
slice := []*gosec.Issue{less, greater}
|
||||
func firstIsGreater(less, greater *issue.Issue) {
|
||||
slice := []*issue.Issue{less, greater}
|
||||
|
||||
sortIssues(slice)
|
||||
|
||||
@@ -40,9 +40,9 @@ func firstIsGreater(less, greater *gosec.Issue) {
|
||||
var _ = Describe("Sorting by Severity", func() {
|
||||
It("sorts by severity", func() {
|
||||
less := createIssue()
|
||||
less.Severity = gosec.Low
|
||||
less.Severity = issue.Low
|
||||
greater := createIssue()
|
||||
less.Severity = gosec.High
|
||||
less.Severity = issue.High
|
||||
firstIsGreater(&less, &greater)
|
||||
})
|
||||
|
||||
|
||||
@@ -9,5 +9,6 @@ import (
|
||||
"go/ast"
|
||||
|
||||
"github.com/securego/gosec/v2"
|
||||
"github.com/securego/gosec/v2/issue"
|
||||
)
|
||||
`))
|
||||
|
||||
@@ -7,7 +7,7 @@ var generatedRuleTmpl = template.Must(template.New("generated").Parse(`
|
||||
// DO NOT EDIT - generated by tlsconfig tool
|
||||
func New{{.Name}}TLSCheck(id string, conf gosec.Config) (gosec.Rule, []ast.Node) {
|
||||
return &insecureConfigTLS{
|
||||
MetaData: gosec.MetaData{ID: id},
|
||||
MetaData: issue.MetaData{ID: id},
|
||||
requiredType: "crypto/tls.Config",
|
||||
MinVersion: {{ .MinVersion }},
|
||||
MaxVersion: {{ .MaxVersion }},
|
||||
|
||||
Reference in New Issue
Block a user