enable linters: copyloopvar, intrange (#3184)

* enable linters: copyloopvar, intrange

* lint
This commit is contained in:
mmetc 2024-09-17 16:10:56 +02:00 committed by GitHub
parent f97b9c84da
commit 5f22c78fcf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 13 additions and 22 deletions

View file

@ -197,12 +197,9 @@ linters:
- funlen # revive - funlen # revive
- gocognit # revive - gocognit # revive
# # Disabled atm
# Disabled until fixed for go 1.22
#
- copyloopvar # copyloopvar is a linter detects places where loop variables are copied - intrange # intrange is a linter to find places where for loops could make use of an integer range.
- intrange # intrange is a linter to find places where for loops could make use of an integer range.
# #
# Enabled # Enabled
@ -212,6 +209,7 @@ linters:
# - asciicheck # checks that all code identifiers does not have non-ASCII symbols in the name # - asciicheck # checks that all code identifiers does not have non-ASCII symbols in the name
# - bidichk # Checks for dangerous unicode character sequences # - bidichk # Checks for dangerous unicode character sequences
# - bodyclose # checks whether HTTP response body is closed successfully # - bodyclose # checks whether HTTP response body is closed successfully
# - copyloopvar # copyloopvar is a linter detects places where loop variables are copied
# - decorder # check declaration order and count of types, constants, variables and functions # - decorder # check declaration order and count of types, constants, variables and functions
# - depguard # Go linter that checks if package imports are in a list of acceptable packages # - depguard # Go linter that checks if package imports are in a list of acceptable packages
# - dupword # checks for duplicate words in the source code # - dupword # checks for duplicate words in the source code
@ -490,11 +488,6 @@ issues:
path: "cmd/crowdsec-cli/idgen/password.go" path: "cmd/crowdsec-cli/idgen/password.go"
text: "deep-exit: .*" text: "deep-exit: .*"
- linters:
- revive
path: "cmd/crowdsec-cli/utils.go"
text: "deep-exit: .*"
- linters: - linters:
- revive - revive
path: "pkg/leakybucket/overflows.go" path: "pkg/leakybucket/overflows.go"

View file

@ -304,7 +304,7 @@ func LoadAcquisitionFromFile(config *csconfig.CrowdsecServiceCfg, prom *csconfig
func GetMetrics(sources []DataSource, aggregated bool) error { func GetMetrics(sources []DataSource, aggregated bool) error {
var metrics []prometheus.Collector var metrics []prometheus.Collector
for i := range len(sources) { for i := range sources {
if aggregated { if aggregated {
metrics = sources[i].GetMetrics() metrics = sources[i].GetMetrics()
} else { } else {
@ -378,7 +378,7 @@ func StartAcquisition(sources []DataSource, output chan types.Event, AcquisTomb
return nil return nil
} }
for i := range len(sources) { for i := range sources {
subsrc := sources[i] // ensure its a copy subsrc := sources[i] // ensure its a copy
log.Debugf("starting one source %d/%d ->> %T", i, len(sources), subsrc) log.Debugf("starting one source %d/%d ->> %T", i, len(sources), subsrc)

View file

@ -22,7 +22,7 @@ func parseKeyToMap(m map[string]interface{}, key string, value string) {
return return
} }
for i := range len(parts) { for i := range parts {
if parts[i] == "" { if parts[i] == "" {
return return
} }

View file

@ -144,7 +144,7 @@ func (s *DecisionsService) FetchV3Decisions(ctx context.Context, url string) (*m
partialDecisions := make([]*models.Decision, len(decisionsGroup.Decisions)) partialDecisions := make([]*models.Decision, len(decisionsGroup.Decisions))
for idx, decision := range decisionsGroup.Decisions { for idx, decision := range decisionsGroup.Decisions {
decision := decision // fix exportloopref linter message decision := decision //nolint:copyloopvar // fix exportloopref linter message
partialDecisions[idx] = &models.Decision{ partialDecisions[idx] = &models.Decision{
Scenario: &scenarioDeleted, Scenario: &scenarioDeleted,
Scope: decisionsGroup.Scope, Scope: decisionsGroup.Scope,

View file

@ -1091,7 +1091,6 @@ func TestAPICPush(t *testing.T) {
} }
for _, tc := range tests { for _, tc := range tests {
tc := tc
t.Run(tc.name, func(t *testing.T) { t.Run(tc.name, func(t *testing.T) {
api := getAPIC(t) api := getAPIC(t)
api.pushInterval = time.Millisecond api.pushInterval = time.Millisecond
@ -1114,8 +1113,10 @@ func TestAPICPush(t *testing.T) {
httpmock.RegisterResponder("POST", "http://api.crowdsec.net/api/signals", httpmock.NewBytesResponder(200, []byte{})) httpmock.RegisterResponder("POST", "http://api.crowdsec.net/api/signals", httpmock.NewBytesResponder(200, []byte{}))
// capture the alerts to avoid datarace
alerts := tc.alerts
go func() { go func() {
api.AlertsAddChan <- tc.alerts api.AlertsAddChan <- alerts
time.Sleep(time.Second) time.Sleep(time.Second)
api.Shutdown() api.Shutdown()

View file

@ -54,7 +54,6 @@ func (s *PluginSuite) TestBrokerInit() {
} }
for _, tc := range tests { for _, tc := range tests {
tc := tc
s.Run(tc.name, func() { s.Run(tc.name, func() {
t := s.T() t := s.T()
if tc.action != nil { if tc.action != nil {

View file

@ -116,7 +116,7 @@ func CheckPerms(path string) error {
*/ */
aceCount := rs.Field(3).Uint() aceCount := rs.Field(3).Uint()
for i := uint64(0); i < aceCount; i++ { for i := range aceCount {
ace := &AccessAllowedAce{} ace := &AccessAllowedAce{}
ret, _, _ := procGetAce.Call(uintptr(unsafe.Pointer(dacl)), uintptr(i), uintptr(unsafe.Pointer(&ace))) ret, _, _ := procGetAce.Call(uintptr(unsafe.Pointer(dacl)), uintptr(i), uintptr(unsafe.Pointer(&ace)))
if ret == 0 { if ret == 0 {

View file

@ -37,7 +37,6 @@ func TestGetPluginNameAndTypeFromPath(t *testing.T) {
}, },
} }
for _, tc := range tests { for _, tc := range tests {
tc := tc
t.Run(tc.name, func(t *testing.T) { t.Run(tc.name, func(t *testing.T) {
got, got1, err := getPluginTypeAndSubtypeFromPath(tc.path) got, got1, err := getPluginTypeAndSubtypeFromPath(tc.path)
cstest.RequireErrorContains(t, err, tc.expectedErr) cstest.RequireErrorContains(t, err, tc.expectedErr)

View file

@ -24,7 +24,7 @@ func isYAMLFileName(path string) bool {
// returns error if the symlink is dangling or too many symlinks are followed // returns error if the symlink is dangling or too many symlinks are followed
func resolveSymlink(path string) (string, error) { func resolveSymlink(path string) (string, error) {
const maxSymlinks = 10 // Prevent infinite loops const maxSymlinks = 10 // Prevent infinite loops
for i := 0; i < maxSymlinks; i++ { for range maxSymlinks {
fi, err := os.Lstat(path) fi, err := os.Lstat(path)
if err != nil { if err != nil {
return "", err // dangling link return "", err // dangling link

View file

@ -298,7 +298,7 @@ func PourItemToHolders(parsed types.Event, holders []BucketFactory, buckets *Buc
BucketPourCache["OK"] = append(BucketPourCache["OK"], evt.(types.Event)) BucketPourCache["OK"] = append(BucketPourCache["OK"], evt.(types.Event))
} }
//find the relevant holders (scenarios) //find the relevant holders (scenarios)
for idx := range len(holders) { for idx := range holders {
//for idx, holder := range holders { //for idx, holder := range holders {
//evaluate bucket's condition //evaluate bucket's condition

View file

@ -184,7 +184,6 @@ func TestNormalizeVersion(t *testing.T) {
} }
for _, tc := range tests { for _, tc := range tests {
tc := tc
t.Run(tc.version, func(t *testing.T) { t.Run(tc.version, func(t *testing.T) {
t.Parallel() t.Parallel()
actual := setup.NormalizeVersion(tc.version) actual := setup.NormalizeVersion(tc.version)