Add linting
Currently several findings with out-of-the-box configs:
golangci-lint run ./...
internal/datasources/renovate/importer.go:26:19: Error return value of `tx.Rollback` is not checked (errcheck)
defer tx.Rollback()
^
internal/datasources/renovate/importer.go:79:19: Error return value of `tx.Rollback` is not checked (errcheck)
defer tx.Rollback()
^
internal/datasources/renovate/parser.go:130:7: SA9003: empty branch (staticcheck)
if dep.LockedVersion != dep.FixedVersion {
^
cmd/table-joiner/main.go:61:14: Error return value of `os.WriteFile` is not checked (errcheck)
os.WriteFile("joined.sql", buf.Bytes(), 0644)
^
internal/datasources/awselasticache/generate_eol.go:21:19: Error return value of `tx.Rollback` is not checked (errcheck)
defer tx.Rollback()
^
internal/osvdev/generate.go:93:6: func `queryBatch` is unused (unused)
func queryBatch(ctx context.Context, client Client, deps []renovatedb.RetrieveDistinctPackagesRow, vulnsCh chan<- []Vulns) error {
^
internal/osvdev/client.go:116:24: S1016: should convert vuln (type QueryBatchVuln) to Vuln instead of using struct literal (gosimple)
vulns[i].Vulns[j] = Vuln{
^
cmd/gen-endoflifedate-parser/main.go:22:5: var `titleCaser` is unused (unused)
var titleCaser = cases.Title(language.BritishEnglish)
^
internal/datasources/sbom/cyclonedx/purl.go:12:6: func `purlToPackageName` is unused (unused)
func purlToPackageName(p packageurl.PackageURL) string {
^
cmd/dmd-web/server.go:49:9: copylocks: return copies lock value: dmd.tanna.dev/cmd/dmd-web.DMDServer contains net/http.Server contains sync/atomic.Bool contains sync/atomic.noCopy (govet)
return server
^
internal/datasources/sbom/spdx/v2.3.go:34:2: S1008: should use 'return err == nil' instead of 'if err != nil { return false }; return true' (gosimple)
if err != nil {
^
pkg/sqlitehelpers/sha3.go:12:44: Error return value of `sqlite.RegisterDeterministicScalarFunction` is not checked (errcheck)
sqlite.RegisterDeterministicScalarFunction("sha3", 1, sha3Func)
^
pkg/sqlitehelpers/sha3.go:23:3: S1001: should use copy(to, from[:]) instead of a loop (gosimple)
for i := 0; i < len(digest); i++ {
^
internal/ownership/bulk.go:13:7: const `wildcard` is unused (unused)
const wildcard = "*"
^
cmd/dmd/cmd/db_anonymise.go:65:33: Error return value of `dbAnonymiseCmd.MarkFlagRequired` is not checked (errcheck)
dbAnonymiseCmd.MarkFlagRequired("out")
^
cmd/dmd/cmd/root.go:71:32: Error return value of `cmd.MarkPersistentFlagRequired` is not checked (errcheck)
cmd.MarkPersistentFlagRequired("db")
^