mirror of
https://github.com/aquasecurity/trivy.git
synced 2025-12-21 14:50:53 -08:00
38 lines
1.1 KiB
Go
38 lines
1.1 KiB
Go
//go:build ruleguard
|
|
|
|
package gorules
|
|
|
|
import "github.com/quasilyte/go-ruleguard/dsl"
|
|
|
|
// cf. https://github.com/golang/go/wiki/CodeReviewComments#declaring-empty-slices
|
|
func declareEmptySlices(m dsl.Matcher) {
|
|
m.Match(
|
|
`$name := []$t{}`,
|
|
`$name := make([]$t, 0)`,
|
|
).
|
|
Suggest(`var $name []$t`).
|
|
Report(`replace '$$' with 'var $name []$t'`)
|
|
}
|
|
|
|
// cf. https://github.com/uber-go/guide/blob/master/style.md#initializing-maps
|
|
func initializeMaps(m dsl.Matcher) {
|
|
m.Match(`map[$key]$value{}`).
|
|
Suggest(`make(map[$key]$value)`).
|
|
Report(`replace '$$' with 'make(map[$key]$value)`)
|
|
}
|
|
|
|
// While errors.Join from standard library can combine multiple errors,
|
|
// we use hashicorp/go-multierror for more user-friendly error outputs.
|
|
func errorsJoin(m dsl.Matcher) {
|
|
m.Match(`errors.Join($x...)`).
|
|
Report("use github.com/hashicorp/go-multierror.Append instead of errors.Join.")
|
|
|
|
m.Match(`errors.Join($*args)`).
|
|
Report("use github.com/hashicorp/go-multierror.Append instead of errors.Join.")
|
|
}
|
|
|
|
func mapSet(m dsl.Matcher) {
|
|
m.Match(`map[$x]struct{}`).
|
|
Report("use github.com/aquasecurity/trivy/pkg/set.Set instead of map.")
|
|
}
|