Skip to content

Commit 3a8e141

Browse files
mcombuechengarethr
authored andcommitted
chore: linting (#23)
* chore: add golangci-lint config * refactor: enable linters and adapt code style
1 parent 06a3f4b commit 3a8e141

27 files changed

+110
-61
lines changed

.github/workflows/ci.yml

-2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@ jobs:
1818

1919
- name: Lint
2020
uses: golangci/golangci-lint-action@v3
21-
with:
22-
args: --timeout=5m --color=always --max-same-issues=0 --max-issues-per-linter=0
2321

2422
- name: Build
2523
run: go build -v -o parlay

.golangci.yaml

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
run:
2+
issues-exit-code: 1
3+
color: always
4+
max-same-issues: 0
5+
max-issues-per-linter: 0
6+
tests: true
7+
timeout: 5m
8+
9+
linters:
10+
enable:
11+
- errcheck
12+
- goimports
13+
- gosimple
14+
- govet
15+
- ineffassign
16+
- misspell
17+
- staticcheck
18+
- typecheck
19+
- unused
20+
21+
linters-settings:
22+
errcheck:
23+
check-blank: true
24+
check-type-assertions: true
25+
govet:
26+
check-shadowing: true
27+
goimports:
28+
local-prefixes: github.com/snyk/parlay
29+
misspell:
30+
locale: US

go.sum

-2
Original file line numberDiff line numberDiff line change
@@ -165,8 +165,6 @@ github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/
165165
github.com/maxatome/go-testdeep v1.12.0 h1:Ql7Go8Tg0C1D/uMMX59LAoYK7LffeJQ6X2T04nTH68g=
166166
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
167167
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
168-
github.com/package-url/packageurl-go v0.1.0 h1:efWBc98O/dBZRg1pw2xiDzovnlMjCa9NPnfaiBduh8I=
169-
github.com/package-url/packageurl-go v0.1.0/go.mod h1:C/ApiuWpmbpni4DIOECf6WCjFUZV7O1Fx7VAzrZHgBw=
170168
github.com/package-url/packageurl-go v0.1.1-0.20220428063043-89078438f170 h1:DiLBVp4DAcZlBVBEtJpNWZpZVq0AEeCY7Hqk8URVs4o=
171169
github.com/package-url/packageurl-go v0.1.1-0.20220428063043-89078438f170/go.mod h1:uQd4a7Rh3ZsVg5j0lNyAfyxIeGde9yrlhjF78GzeW0c=
172170
github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU=

internal/commands/default.go

+11-6
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ package commands
33
import (
44
"os"
55

6+
"github.com/rs/zerolog"
7+
"github.com/spf13/cobra"
8+
"github.com/spf13/viper"
9+
610
"github.com/snyk/parlay/internal/commands/deps"
711
"github.com/snyk/parlay/internal/commands/ecosystems"
812
"github.com/snyk/parlay/internal/commands/scorecard"
913
"github.com/snyk/parlay/internal/commands/snyk"
10-
11-
"github.com/rs/zerolog"
12-
"github.com/spf13/cobra"
13-
"github.com/spf13/viper"
1414
)
1515

1616
// These values are set at build time
@@ -19,14 +19,19 @@ var (
1919
)
2020

2121
func NewDefaultCommand() *cobra.Command {
22+
output := zerolog.ConsoleWriter{Out: os.Stderr}
23+
logger := zerolog.New(output).With().Timestamp().Logger()
24+
2225
cmd := cobra.Command{
2326
Use: "parlay",
2427
Short: "Enrich an SBOM with context from third party services",
2528
SilenceUsage: true,
2629
Version: version,
2730
DisableFlagsInUseLine: true,
2831
Run: func(cmd *cobra.Command, args []string) {
29-
_ = cmd.Help()
32+
if err := cmd.Help(); err != nil {
33+
logger.Fatal().Err(err).Msg("Failed to run parlay command")
34+
}
3035
},
3136
PersistentPreRun: func(cmd *cobra.Command, args []string) {
3237
if viper.GetBool("debug") {
@@ -42,7 +47,7 @@ func NewDefaultCommand() *cobra.Command {
4247
viper.BindPFlag("debug", cmd.PersistentFlags().Lookup("debug")) //nolint:errcheck
4348

4449
cmd.SetVersionTemplate(`{{.Version}}`)
45-
50+
4651
cmd.AddCommand(ecosystems.NewEcosystemsRootCommand(logger))
4752
cmd.AddCommand(snyk.NewSnykRootCommand(logger))
4853
cmd.AddCommand(deps.NewDepsRootCommand(logger))

internal/commands/deps/repos.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
package deps
22

33
import (
4+
"encoding/json"
45
"fmt"
5-
"encoding/json"
6-
7-
"github.com/snyk/parlay/lib/deps"
86

97
"github.com/rs/zerolog"
108
"github.com/spf13/cobra"
9+
10+
"github.com/snyk/parlay/lib/deps"
1111
)
1212

1313
func NewRepoCommand(logger zerolog.Logger) *cobra.Command {
@@ -20,7 +20,7 @@ func NewRepoCommand(logger zerolog.Logger) *cobra.Command {
2020
if err != nil {
2121
logger.Fatal().Err(err).Msg("Error retrieving data from deps.dev")
2222
}
23-
repository, err := json.Marshal(repo)
23+
repository, err := json.Marshal(repo)
2424
if err != nil {
2525
logger.Fatal().Err(err).Msg("Error with JSON response from deps.dev")
2626
}

internal/commands/deps/root.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ func NewDepsRootCommand(logger zerolog.Logger) *cobra.Command {
1313
DisableFlagsInUseLine: true,
1414
SilenceUsage: true,
1515
Run: func(cmd *cobra.Command, args []string) {
16-
_ = cmd.Help()
16+
if err := cmd.Help(); err != nil {
17+
logger.Fatal().Err(err).Msg("Failed to run deps command")
18+
}
1719
},
1820
}
1921

internal/commands/ecosystems/enrich.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ import (
44
"bytes"
55
"os"
66

7-
"github.com/snyk/parlay/internal/utils"
8-
"github.com/snyk/parlay/lib/ecosystems"
9-
107
cdx "github.com/CycloneDX/cyclonedx-go"
118
"github.com/rs/zerolog"
129
"github.com/spf13/cobra"
10+
11+
"github.com/snyk/parlay/internal/utils"
12+
"github.com/snyk/parlay/lib/ecosystems"
1313
)
1414

1515
func NewEnrichCommand(logger zerolog.Logger) *cobra.Command {
@@ -32,6 +32,7 @@ func NewEnrichCommand(logger zerolog.Logger) *cobra.Command {
3232
bom = ecosystems.EnrichSBOM(bom)
3333
err = cdx.NewBOMEncoder(os.Stdout, cdx.BOMFileFormatJSON).Encode(bom)
3434
if err != nil {
35+
// We dont wunt to eat this erorr.
3536
logger.Fatal().Err(err).Msg("Failed to envode new SBOM")
3637
}
3738
},

internal/commands/ecosystems/packages.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ package ecosystems
33
import (
44
"fmt"
55

6-
"github.com/snyk/parlay/lib/ecosystems"
7-
86
"github.com/package-url/packageurl-go"
97
"github.com/rs/zerolog"
108
"github.com/spf13/cobra"
9+
10+
"github.com/snyk/parlay/lib/ecosystems"
1111
)
1212

1313
func NewPackageCommand(logger zerolog.Logger) *cobra.Command {

internal/commands/ecosystems/repos.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ package ecosystems
33
import (
44
"fmt"
55

6-
"github.com/snyk/parlay/lib/ecosystems"
7-
86
"github.com/rs/zerolog"
97
"github.com/spf13/cobra"
8+
9+
"github.com/snyk/parlay/lib/ecosystems"
1010
)
1111

1212
func NewRepoCommand(logger zerolog.Logger) *cobra.Command {
@@ -17,7 +17,7 @@ func NewRepoCommand(logger zerolog.Logger) *cobra.Command {
1717
Run: func(cmd *cobra.Command, args []string) {
1818
resp, err := ecosystems.GetRepoData(args[0])
1919
if err != nil {
20-
logger.Fatal().Err(err).Msg("An error occured")
20+
logger.Fatal().Err(err).Msg("An error occurred")
2121
}
2222
fmt.Print(string(resp.Body))
2323
},

internal/commands/ecosystems/root.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ func NewEcosystemsRootCommand(logger zerolog.Logger) *cobra.Command {
1313
DisableFlagsInUseLine: true,
1414
SilenceUsage: true,
1515
Run: func(cmd *cobra.Command, args []string) {
16-
_ = cmd.Help()
16+
if err := cmd.Help(); err != nil {
17+
logger.Fatal().Err(err).Msg("Failed to run ecosystems command")
18+
}
1719
},
1820
}
1921

internal/commands/scorecard/enrich.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ import (
44
"bytes"
55
"os"
66

7-
"github.com/snyk/parlay/internal/utils"
8-
"github.com/snyk/parlay/lib/scorecard"
9-
107
cdx "github.com/CycloneDX/cyclonedx-go"
118
"github.com/rs/zerolog"
129
"github.com/spf13/cobra"
10+
11+
"github.com/snyk/parlay/internal/utils"
12+
"github.com/snyk/parlay/lib/scorecard"
1313
)
1414

1515
func NewEnrichCommand(logger zerolog.Logger) *cobra.Command {

internal/commands/scorecard/root.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ func NewRootCommand(logger zerolog.Logger) *cobra.Command {
1313
DisableFlagsInUseLine: true,
1414
SilenceUsage: true,
1515
Run: func(cmd *cobra.Command, args []string) {
16-
_ = cmd.Help()
16+
if err := cmd.Help(); err != nil {
17+
logger.Fatal().Err(err).Msg("Failed to run scorecard command")
18+
}
1719
},
1820
}
1921

internal/commands/snyk/enrich.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ import (
44
"bytes"
55
"os"
66

7-
"github.com/snyk/parlay/internal/utils"
8-
"github.com/snyk/parlay/lib/snyk"
9-
107
cdx "github.com/CycloneDX/cyclonedx-go"
118
"github.com/rs/zerolog"
129
"github.com/spf13/cobra"
10+
11+
"github.com/snyk/parlay/internal/utils"
12+
"github.com/snyk/parlay/lib/snyk"
1313
)
1414

1515
func NewEnrichCommand(logger zerolog.Logger) *cobra.Command {

internal/commands/snyk/packages.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ package snyk
33
import (
44
"fmt"
55

6-
"github.com/snyk/parlay/lib/snyk"
7-
86
"github.com/package-url/packageurl-go"
97
"github.com/rs/zerolog"
108
"github.com/spf13/cobra"
9+
10+
"github.com/snyk/parlay/lib/snyk"
1111
)
1212

1313
func NewPackageCommand(logger zerolog.Logger) *cobra.Command {
@@ -23,7 +23,7 @@ func NewPackageCommand(logger zerolog.Logger) *cobra.Command {
2323
logger.Debug().Str("purl", args[0]).Msg("Looking up package vulnerabilities from Snyk")
2424
resp, err := snyk.GetPackageVulnerabilities(purl)
2525
if err != nil {
26-
logger.Fatal().Err(err).Msg("An error occured")
26+
logger.Fatal().Err(err).Msg("An error occurred")
2727
}
2828
fmt.Print(string(resp.Body))
2929
},

internal/commands/snyk/root.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ func NewSnykRootCommand(logger zerolog.Logger) *cobra.Command {
1313
DisableFlagsInUseLine: true,
1414
SilenceUsage: true,
1515
Run: func(cmd *cobra.Command, args []string) {
16-
_ = cmd.Help()
16+
if err := cmd.Help(); err != nil {
17+
logger.Fatal().Err(err).Msg("Failed to run snyk command")
18+
}
1719
},
1820
}
1921
cmd.AddCommand(NewPackageCommand(logger))

lib/deps/repo.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
package deps
1818

1919
import (
20-
"github.com/edoardottt/depsdev/pkg/depsdev"
20+
"github.com/edoardottt/depsdev/pkg/depsdev"
2121
)
2222

2323
func GetRepoData(url string) (*depsdev.Project, error) {

lib/ecosystems/enrich.go

+6-5
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ package ecosystems
1919
import (
2020
"time"
2121

22-
"github.com/snyk/parlay/ecosystems/packages"
23-
2422
cdx "github.com/CycloneDX/cyclonedx-go"
2523
"github.com/package-url/packageurl-go"
2624
"github.com/remeh/sizedwaitgroup"
25+
26+
"github.com/snyk/parlay/ecosystems/packages"
2727
)
2828

2929
func enrichDescription(component cdx.Component, packageData packages.Package) cdx.Component {
@@ -37,8 +37,8 @@ func enrichLicense(component cdx.Component, packageData packages.Package) cdx.Co
3737
if packageData.NormalizedLicenses != nil {
3838
if len(packageData.NormalizedLicenses) > 0 {
3939
expression := packageData.NormalizedLicenses[0]
40-
licences := cdx.LicenseChoice{Expression: expression}
41-
component.Licenses = &cdx.Licenses{licences}
40+
licenses := cdx.LicenseChoice{Expression: expression}
41+
component.Licenses = &cdx.Licenses{licenses}
4242
}
4343
}
4444
return component
@@ -179,7 +179,8 @@ func enrichComponentsWithEcosystems(bom *cdx.BOM, enrichFuncs []func(cdx.Compone
179179
for i, component := range *bom.Components {
180180
wg.Add()
181181
go func(component cdx.Component, i int) {
182-
purl, _ := packageurl.FromString(component.PackageURL)
182+
// TODO: return when there is no usable Purl on the component.
183+
purl, _ := packageurl.FromString(component.PackageURL) //nolint:errcheck
183184
resp, err := GetPackageData(purl)
184185
if err == nil {
185186
packageData := resp.JSON200

lib/ecosystems/enrich_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ import (
2121
"testing"
2222
"time"
2323

24-
"github.com/snyk/parlay/ecosystems/packages"
25-
2624
cdx "github.com/CycloneDX/cyclonedx-go"
2725
"github.com/jarcoal/httpmock"
2826
"github.com/stretchr/testify/assert"
27+
28+
"github.com/snyk/parlay/ecosystems/packages"
2929
)
3030

3131
func TestEnrichSBOM(t *testing.T) {

lib/ecosystems/package.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ import (
2121
"fmt"
2222
"net/url"
2323

24-
"github.com/snyk/parlay/ecosystems/packages"
25-
2624
"github.com/package-url/packageurl-go"
25+
26+
"github.com/snyk/parlay/ecosystems/packages"
2727
)
2828

2929
const server = "https://packages.ecosyste.ms/api/v1"

lib/ecosystems/package_test.go

+5-2
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"github.com/jarcoal/httpmock"
2525
"github.com/package-url/packageurl-go"
2626
"github.com/stretchr/testify/assert"
27+
"github.com/stretchr/testify/require"
2728
)
2829

2930
func TestGetPackageData(t *testing.T) {
@@ -36,9 +37,11 @@ func TestGetPackageData(t *testing.T) {
3637
httpmock.NewBytesResponder(200, []byte{}),
3738
)
3839

39-
purl, _ := packageurl.FromString("pkg:maven/org.springframework.boot/spring-boot-starter-jdb")
40+
purl, err := packageurl.FromString("pkg:maven/org.springframework.boot/spring-boot-starter-jdb")
41+
require.NoError(t, err)
4042

41-
_, _ = GetPackageData(purl)
43+
_, err = GetPackageData(purl)
44+
require.NoError(t, err)
4245

4346
httpmock.GetTotalCallCount()
4447
calls := httpmock.GetCallCountInfo()

lib/ecosystems/repo_test.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121

2222
"github.com/jarcoal/httpmock"
2323
"github.com/stretchr/testify/assert"
24+
"github.com/stretchr/testify/require"
2425
)
2526

2627
func TestGetRepoData(t *testing.T) {
@@ -33,7 +34,8 @@ func TestGetRepoData(t *testing.T) {
3334
httpmock.NewBytesResponder(200, []byte{}),
3435
)
3536

36-
_, _ = GetRepoData("https://github.com/golang/go")
37+
_, err := GetRepoData("https://github.com/golang/go")
38+
require.NoError(t, err)
3739

3840
httpmock.GetTotalCallCount()
3941
calls := httpmock.GetCallCountInfo()

0 commit comments

Comments
 (0)