Skip to content

Commit b9e127e

Browse files
authored
golangci-lint: Enable more linters (#1091)
1 parent 74b95d7 commit b9e127e

34 files changed

+65
-87
lines changed

.golangci.yaml

+25
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,21 @@
22
run:
33
timeout: 10m
44

5+
linters:
6+
enable:
7+
- contextcheck
8+
- exhaustruct
9+
- gocyclo
10+
- reassign
11+
- misspell
12+
- nolintlint
13+
- unconvert
14+
- unparam
15+
- whitespace
16+
# TODO: These are good but need some work to fix everything
17+
# - gocritic
18+
# - revive
19+
520
linters-settings:
621
govet:
722
settings:
@@ -14,3 +29,13 @@ linters-settings:
1429
- Fatalf
1530
- Panicf
1631
- DPanicf
32+
exhaustruct:
33+
# List of regular expressions to match struct packages and names.
34+
# If this list is empty, all structs are tested.
35+
# Default: []
36+
include:
37+
- '.*cloudbeat.*fetching.ResourceInfo'
38+
- '.*cloudbeat.*fetching.fetchers.*'
39+
exclude:
40+
- '.*cloudbeat.*fetching.fetchers.FileCommonData'
41+
- '.*cloudbeat.*fetching.fetchers.ProcCommonData'
File renamed without changes.

bin/golangci-lint

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
.golangci-lint-1.52.2.pkg
1+
.golangci-lint-1.53.3.pkg

dataprovider/providers/aws/data_provider_test.go

-1
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ func (s *AwsDataProviderTestSuite) TestAwsDataProvider_FetchData() {
9191
}
9292
s.NoError(err)
9393
s.Equal(result, test.expected)
94-
9594
}
9695
}
9796

deploy/cloudformation/gomain.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ func generateDevTemplate() (err error) {
125125
}
126126
}(f)
127127

128-
_, err = f.Write([]byte(generatedTemplateString))
128+
_, err = f.WriteString(generatedTemplateString)
129129
if err != nil {
130130
return fmt.Errorf("failed to write to dev template: %w", err)
131131
}

launcher/errors.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
package launcher
2222

23-
// BeaterUnhealthyError error is an error that is desgined to have an information that
23+
// BeaterUnhealthyError error is an error that is designed to have an information that
2424
// can help to end user to operate cloudbeat health issues.
2525
// For example, when a cloudbeat configuration is invalid, the error will include
2626
// more information about what is missing/expected and might have links to external sources as well

main_test.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@ func init() {
3737
}
3838

3939
// Test started when the test binary is started. Only calls main.
40-
func TestSystem(t *testing.T) {
41-
40+
func TestSystem(_ *testing.T) {
4241
if *systemTest {
4342
main()
4443
}

resources/fetching/factory/factory_test.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -165,12 +165,11 @@ func TestNewFactory(t *testing.T) {
165165
Account: awssdk.String("test-account"),
166166
}, nil)
167167

168-
identityProvider := func(cfg awssdk.Config) awslib.IdentityProviderGetter {
168+
identityProvider := func(_ awssdk.Config) awslib.IdentityProviderGetter {
169169
return identity
170170
}
171171

172172
t.Run(tt.name, func(t *testing.T) {
173-
174173
fetchersMap, err := NewFactory(context.TODO(), logger, tt.cfg, ch, le, kubeClient, identityProvider, awsconfig)
175174
assert.Equal(t, tt.want.count, len(fetchersMap))
176175
for fetcher := range fetchersMap {

resources/fetching/fetchers/ecr_fetcher.go

+3-7
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ package fetchers
1919

2020
import (
2121
"context"
22-
"fmt"
2322
"regexp"
2423

2524
"github.com/aws/aws-sdk-go-v2/service/ecr/types"
@@ -77,10 +76,7 @@ func (f *EcrFetcher) Fetch(ctx context.Context, cMetadata fetching.CycleMetadata
7776
return err
7877
}
7978

80-
ecrDescribedRepositories, err := f.describePodImagesRepositories(ctx, podsList, f.PodDescriber)
81-
if err != nil {
82-
return fmt.Errorf("could not retrieve pod's aws repositories: %w", err)
83-
}
79+
ecrDescribedRepositories := f.describePodImagesRepositories(ctx, podsList, f.PodDescriber)
8480
for _, repository := range ecrDescribedRepositories {
8581
f.resourceCh <- fetching.ResourceInfo{
8682
Resource: EcrResource{ecr.Repository(repository)},
@@ -90,7 +86,7 @@ func (f *EcrFetcher) Fetch(ctx context.Context, cMetadata fetching.CycleMetadata
9086
return nil
9187
}
9288

93-
func (f *EcrFetcher) describePodImagesRepositories(ctx context.Context, podsList *v1.PodList, describer PodDescriber) ([]types.Repository, error) {
89+
func (f *EcrFetcher) describePodImagesRepositories(ctx context.Context, podsList *v1.PodList, describer PodDescriber) []types.Repository {
9490
regionToReposMap := getAwsRepositories(podsList, describer)
9591
f.log.Debugf("sending pods to ecrProviders: %v", regionToReposMap)
9692
awsRepositories := make([]types.Repository, 0)
@@ -103,7 +99,7 @@ func (f *EcrFetcher) describePodImagesRepositories(ctx context.Context, podsList
10399
awsRepositories = append(awsRepositories, describedRepo...)
104100
}
105101
}
106-
return awsRepositories, nil
102+
return awsRepositories
107103
}
108104

109105
func getAwsRepositories(podsList *v1.PodList, describer PodDescriber) map[string][]string {

resources/fetching/fetchers/ecr_fetcher_test.go

-1
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,6 @@ func (s *EcrFetcherTestSuite) TestCreateFetcher() {
276276
s.Equal(*ecrResource.RepositoryArn, metadata.ID)
277277
}
278278
}
279-
280279
}
281280

282281
func (s *EcrFetcherTestSuite) TestCreateFetcherErrorCases() {

resources/fetching/fetchers/elb_fetcher.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ func NewElbFetcher(log *logp.Logger, ch chan fetching.ResourceInfo, kubeProvider
6161
func (f *ElbFetcher) Fetch(ctx context.Context, cMetadata fetching.CycleMetadata) error {
6262
f.log.Debug("Starting ElbFetcher.Fetch")
6363

64-
balancers, err := f.GetLoadBalancers()
64+
balancers, err := f.GetLoadBalancers(ctx)
6565
if err != nil {
6666
return fmt.Errorf("failed to load balancers from Kubernetes %w", err)
6767
}
@@ -79,8 +79,7 @@ func (f *ElbFetcher) Fetch(ctx context.Context, cMetadata fetching.CycleMetadata
7979
return nil
8080
}
8181

82-
func (f *ElbFetcher) GetLoadBalancers() ([]string, error) {
83-
ctx := context.Background()
82+
func (f *ElbFetcher) GetLoadBalancers(ctx context.Context) ([]string, error) {
8483
services, err := f.kubeClient.CoreV1().Services("").List(ctx, metav1.ListOptions{})
8584
if err != nil {
8685
return nil, fmt.Errorf("failed to get Kuberenetes services: %w", err)

resources/fetching/fetchers/elb_fetcher_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,6 @@ func (s *ElbFetcherTestSuite) TestCreateFetcher() {
170170
}
171171

172172
func (s *ElbFetcherTestSuite) TestCreateFetcherErrorCases() {
173-
174173
var tests = []struct {
175174
ns string
176175
loadBalancerIngress []v1.LoadBalancerIngress
@@ -221,6 +220,7 @@ func (s *ElbFetcherTestSuite) TestCreateFetcherErrorCases() {
221220
kubeClient: kubeclient,
222221
lbRegexMatchers: regexMatchers,
223222
resourceCh: s.resourceCh,
223+
cloudIdentity: nil,
224224
}
225225

226226
ctx := context.Background()

resources/fetching/fetchers/file_system_fetcher.go

+6-8
Original file line numberDiff line numberDiff line change
@@ -122,26 +122,24 @@ func (f *FileSystemFetcher) Fetch(_ context.Context, cMetadata fetching.CycleMet
122122
return nil
123123
}
124124

125-
func (f *FileSystemFetcher) fetchSystemResource(filePath string) (FSResource, error) {
126-
125+
func (f *FileSystemFetcher) fetchSystemResource(filePath string) (*FSResource, error) {
127126
info, err := os.Stat(filePath)
128127
if err != nil {
129-
return FSResource{}, fmt.Errorf("failed to fetch %s, error: %w", filePath, err)
128+
return nil, fmt.Errorf("failed to fetch %s, error: %w", filePath, err)
130129
}
131130
resourceInfo, _ := f.fromFileInfo(info, filePath)
132131

133132
return resourceInfo, nil
134133
}
135134

136-
func (f *FileSystemFetcher) fromFileInfo(info os.FileInfo, path string) (FSResource, error) {
137-
135+
func (f *FileSystemFetcher) fromFileInfo(info os.FileInfo, path string) (*FSResource, error) {
138136
if info == nil {
139-
return FSResource{}, nil
137+
return nil, nil
140138
}
141139

142140
stat, ok := info.Sys().(*syscall.Stat_t)
143141
if !ok {
144-
return FSResource{}, errors.New("Not a syscall.Stat_t")
142+
return nil, errors.New("Not a syscall.Stat_t")
145143
}
146144

147145
mod := strconv.FormatUint(uint64(info.Mode().Perm()), 8)
@@ -171,7 +169,7 @@ func (f *FileSystemFetcher) fromFileInfo(info os.FileInfo, path string) (FSResou
171169
SubType: getFSSubType(info),
172170
}
173171

174-
return FSResource{
172+
return &FSResource{
175173
EvalResource: data,
176174
ElasticCommon: enrichFileCommonData(stat, data, path),
177175
}, nil

resources/fetching/fetchers/iam_fetcher_test.go

-1
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,6 @@ func (s *IamFetcherTestSuite) TestIamFetcher_Fetch() {
217217

218218
for _, test := range tests {
219219
s.Run(test.name, func() {
220-
221220
iamProviderMock := &iam.MockAccessManagement{}
222221
for funcName, returnVals := range test.mocksReturnVals {
223222
iamProviderMock.On(funcName, context.TODO()).Return(returnVals...)

resources/fetching/fetchers/kms_fetcher.go

-5
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,10 @@ import (
2929

3030
type KmsFetcher struct {
3131
log *logp.Logger
32-
cfg KmsFetcherConfig
3332
kms kms.KMS
3433
resourceCh chan fetching.ResourceInfo
3534
}
3635

37-
type KmsFetcherConfig struct {
38-
fetching.AwsBaseFetcherConfig `config:",inline"`
39-
}
40-
4136
type KmsResource struct {
4237
key awslib.AwsResource
4338
}

resources/fetching/fetchers/kms_fetcher_test.go

-5
Original file line numberDiff line numberDiff line change
@@ -83,18 +83,13 @@ func (s *KmsFetcherTestSuite) TestFetcher_Fetch() {
8383

8484
for _, test := range tests {
8585
s.Run(test.name, func() {
86-
kmsFetcherCfg := KmsFetcherConfig{
87-
AwsBaseFetcherConfig: fetching.AwsBaseFetcherConfig{},
88-
}
89-
9086
kmsProviderMock := &kms.MockKMS{}
9187
for funcName, returnVals := range test.kmsMocksReturnVals {
9288
kmsProviderMock.On(funcName, context.TODO()).Return(returnVals...)
9389
}
9490

9591
kmsFetcher := KmsFetcher{
9692
log: s.log,
97-
cfg: kmsFetcherCfg,
9893
kms: kmsProviderMock,
9994
resourceCh: s.resourceCh,
10095
}

resources/fetching/fetchers/logging_fetcher_test.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ func TestEnrichedTrailResource_GetMetadata(t *testing.T) {
155155

156156
func TestConfigResource_GetMetadata(t *testing.T) {
157157
r := ConfigResource{
158+
configs: nil,
158159
identity: &awslib.Identity{
159160
Account: aws.String("test-account"),
160161
Arn: aws.String("test-arn")},
@@ -164,6 +165,6 @@ func TestConfigResource_GetMetadata(t *testing.T) {
164165

165166
assert.NoError(t, err)
166167
assert.Equal(t, fetching.ResourceMetadata{ID: "configservice-test-account", Type: "cloud-config", SubType: "aws-config", Name: "configservice-test-account", ECSFormat: ""}, meta)
167-
assert.Equal(t, ConfigResource{}.configs, r.GetData())
168+
assert.Nil(t, r.GetData())
168169
assert.Equal(t, nil, r.GetElasticCommonData())
169170
}

resources/fetching/fetchers/network_fetcher.go

+3-6
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,7 @@ func NewNetworkFetcher(log *logp.Logger, ec2Client ec2.ElasticCompute, ch chan f
5555
// Fetch collects network resource such as network acl and security groups
5656
func (f NetworkFetcher) Fetch(ctx context.Context, cMetadata fetching.CycleMetadata) error {
5757
f.log.Debug("Starting NetworkFetcher.Fetch")
58-
resources, err := f.aggregateResources(ctx, f.ec2Client)
59-
if err != nil {
60-
return err
61-
}
58+
resources := f.aggregateResources(ctx, f.ec2Client)
6259

6360
for _, resource := range resources {
6461
f.resourceCh <- fetching.ResourceInfo{
@@ -92,7 +89,7 @@ func (r NetworkResource) GetMetadata() (fetching.ResourceMetadata, error) {
9289

9390
func (r NetworkResource) GetElasticCommonData() any { return nil }
9491

95-
func (f NetworkFetcher) aggregateResources(ctx context.Context, client ec2.ElasticCompute) ([]awslib.AwsResource, error) {
92+
func (f NetworkFetcher) aggregateResources(ctx context.Context, client ec2.ElasticCompute) []awslib.AwsResource {
9693
var resources []awslib.AwsResource
9794
nacl, err := client.DescribeNetworkAcl(ctx)
9895
if err != nil {
@@ -119,5 +116,5 @@ func (f NetworkFetcher) aggregateResources(ctx context.Context, client ec2.Elast
119116
resources = append(resources, ebsEncryption...)
120117
}
121118

122-
return resources, nil
119+
return resources
123120
}

resources/fetching/fetchers/process_fetcher.go

+14-13
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,6 @@ func (f *ProcessesFetcher) fetchProcessData(procStat proc.ProcStat, processConf
170170
}
171171

172172
func (f *ProcessesFetcher) enrichProcCommonData(stat proc.ProcStat, cmd string, pid string) ProcCommonData {
173-
procCd := &ProcCommonData{}
174173
processID, err := strconv.ParseInt(pid, 10, 64)
175174
if err != nil {
176175
f.log.Errorf("Couldn't parse PID, pid: %s", pid)
@@ -197,18 +196,20 @@ func (f *ProcessesFetcher) enrichProcCommonData(stat proc.ProcStat, cmd string,
197196
}
198197
uptimeDate := time.Now().Add(-time.Duration(sysUptime) * time.Second)
199198

200-
procCd.PID = processID
201-
procCd.CommandLine = cmd
202-
procCd.Args = strings.Split(cmd, " ")
203-
procCd.ArgsCount = int64(len(procCd.Args))
204-
procCd.Name = stat.Name
205-
procCd.Title = stat.Name
206-
procCd.PGID = pgid
207-
procCd.Parent = &ProcCommonData{PID: ppid}
208-
procCd.Start = uptimeDate.Add(ticksToDuration(startTime))
209-
procCd.Uptime = int64(time.Since(procCd.Start).Seconds())
210-
211-
return *procCd
199+
args := strings.Split(cmd, " ")
200+
start := uptimeDate.Add(ticksToDuration(startTime))
201+
return ProcCommonData{
202+
Parent: &ProcCommonData{PID: ppid},
203+
PID: processID,
204+
Name: stat.Name,
205+
PGID: pgid,
206+
CommandLine: cmd,
207+
Args: args,
208+
ArgsCount: int64(len(args)),
209+
Title: stat.Name,
210+
Start: start,
211+
Uptime: int64(time.Since(start).Seconds()),
212+
}
212213
}
213214

214215
// getProcessConfigurationFile - reads the configuration file associated with a process.

resources/fetching/fetchers/process_fetcher_test.go

-1
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,6 @@ func (s *ProcessFetcherTestSuite) TestFetchWhenNoFlagRequired() {
161161
}
162162

163163
func (s *ProcessFetcherTestSuite) TestFetchWhenFlagExistsWithConfigFile() {
164-
165164
testCases := []struct {
166165
configFileName string
167166
marshal func(in interface{}) (out []byte, err error)

resources/fetching/manager/manager.go

-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ func (m *Manager) Stop() {
6868
}
6969

7070
func (m *Manager) fetchAndSleep(ctx context.Context) {
71-
7271
// set immediate exec for first time run
7372
timer := time.NewTimer(0)
7473
defer timer.Stop()

resources/providers/aws_cis/logging/logging.go

-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ func NewProvider(
4545
multiRegionS3Factory awslib.CrossRegionFactory[s3.Client],
4646
accountId string,
4747
) *Provider {
48-
4948
return &Provider{
5049
log: log,
5150
s3Provider: s3.NewProvider(log, cfg, multiRegionS3Factory, accountId),

resources/providers/aws_cis/monitoring/monitoring.go

-2
Original file line numberDiff line numberDiff line change
@@ -114,14 +114,12 @@ func (p *Provider) AggregateResources(ctx context.Context) (*Resource, error) {
114114
}
115115
topics := p.getSubscriptionForAlarms(ctx, info.Trail.HomeRegion, alarms)
116116
bindings[name] = topics
117-
118117
}
119118
items = append(items, MonitoringItem{
120119
TrailInfo: info,
121120
MetricFilters: metrics,
122121
MetricTopicBinding: bindings,
123122
})
124-
125123
}
126124

127125
return &Resource{Items: items}, nil

resources/providers/awslib/aws.go

-6
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ package awslib
1919

2020
import (
2121
"errors"
22-
23-
awssdk "github.com/aws/aws-sdk-go-v2/aws"
2422
)
2523

2624
const (
@@ -30,10 +28,6 @@ const (
3028

3129
var ErrClientNotFound = errors.New("aws client not found")
3230

33-
type Config struct {
34-
Config awssdk.Config
35-
}
36-
3731
type AwsResource interface {
3832
GetResourceArn() string
3933
GetResourceName() string

0 commit comments

Comments
 (0)