Skip to content

Commit

Permalink
update golangci linter config with fixes
Browse files Browse the repository at this point in the history
Signed-off-by: Pranay Valson <[email protected]>
  • Loading branch information
noslav committed Jan 9, 2025
1 parent 2153518 commit ef8efc9
Show file tree
Hide file tree
Showing 4 changed files with 100 additions and 9 deletions.
8 changes: 4 additions & 4 deletions .github/workflows/golangci-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,18 @@ jobs:
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v4
- name: Set up Go 1.22.5
- name: Set up Go 1.23.4
uses: actions/setup-go@v4
with:
go-version: 1.22.5
go-version: 1.23.4
id: go
- run: go version

- name: Lint
run: |
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s v1.55.2
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s v1.63.4
go mod tidy
./bin/golangci-lint run -v --timeout=3m --go=1.22.5
./bin/golangci-lint run -v --config=.golangci.yml --timeout=3m --go=1.23.4
# Optional: working directory, useful for monorepos
# working-directory: somedir
Expand Down
73 changes: 73 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Refer to golangci-lint's example config file for more options and information:
# https://github.com/golangci/golangci-lint/blob/master/.golangci.example.yml

run:
timeout: 5m
modules-download-mode: readonly
# skip-dirs:
# - binary/
# - build/
# - car/
# - core/
# - coreapi/
# - dag/
# - http/
# - openapi/
# - pinclient/
# - server/
# - w3up/

linters:
enable:
#-------------main-list--------------#
- errcheck # Errcheck is a program for checking for unchecked errors in go programs. These unchecked errors can be critical bugs in some cases
- gosimple # Linter for Go source code that specializes in simplifying a code
- govet # Vet examines Go source code and reports suspicious constructs, such as Printf calls whose arguments do not align with the format string
- ineffassign # Detects when assignments to existing variables are not used
- unused # Checks Go code for unused constants, variables, functions and types
- staticcheck # Staticcheck is a go vet on steroids, applying a ton of static analysis checks

disable:
# main-list
## disable now re-enable later
## re-enable never
- depguard # Go linter that checks if package imports are in a list of acceptable packages
- contextcheck # Check the function whether use a non-inherited context
- cyclop # Checks function and package cyclomatic complexity
- durationcheck # Check for two durations multiplied together
- exhaustivestruct # Checks if all struct's fields are initialized
- forbidigo # Forbids identifiers
- forcetypeassert # finds forced type assertions
- funlen # Tool for detection of long functions\
- gci # Gci control golang package import order and make it always deterministic.
- gochecknoglobals # check that no global variables exist
- gochecknoinits # Checks that no init functions are present in Go code
- gocognit # Computes and checks the cognitive complexity of functions
- godot # Check if comments end in a period
- goerr113 # Golang linter to check the errors handling expressions
- gofumpt # Gofumpt checks whether code was gofumpt-ed
- gomnd # An analyzer to detect magic numbers
- gomoddirectives # Manage the use of 'replace', 'retract', and 'excludes' directives in go.mod
- ifshort # Checks that your code uses short syntax for if-statements whenever possible
- ireturn # Accept Interfaces, Return Concrete Types
- lll # Reports long lines
- maintidx # Measures the maintainability index of each function
- makezero # Finds slice declarations with non-zero initial length
- nakedret # Finds naked returns in functions greater than a specified function length
- nestif # Reports deeply nested if statements
- paralleltest # paralleltest detects missing usage of t.Parallel() method in your Go test
- prealloc # Finds slice declarations that could potentially be preallocated
- predeclared # Find code that shadows one of Go's predeclared identifiers
- promlinter # Check Prometheus metrics naming via promlint
- tagliatelle # Checks the struct tags.
- tenv # tenv is analyzer that detects using os.Setenv instead of t.Setenv since Go1.17
- testpackage # linter that makes you use a separate _test package
- thelper # thelper detects golang test helpers without t.Helper() call and checks the consistency of test helpers
- tparallel # tparallel detects inappropriate usage of t.Parallel() method in your Go test codes
- wastedassign # wastedassign finds wasted assignment statements
- wsl # Whitespace Linter - Forces you to use empty lines!

issues:
exclude-use-default: false
max-issues-per-linter: 0
max-same-issues: 0
6 changes: 5 additions & 1 deletion dag/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,11 @@ func (fetcher *httpContentFetcher) tryFetch(ctx context.Context, cid string, url
return emptyBytes, err
}

defer resp.Body.Close()
defer func() {
if err := resp.Body.Close(); err != nil {
log.Printf("failed to close response body: %v", err)
}
}()
if resp.StatusCode == 200 {
return io.ReadAll(resp.Body)
} else {
Expand Down
22 changes: 18 additions & 4 deletions server/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,11 @@ func readContentFromRequest(r *http.Request) (map[string][]byte, error) {
if err != nil {
return nil, err
}
defer file.Close()
defer func() {
if err := file.Close(); err != nil {
log.Printf("failed to close file: %v", err)
}
}()

data, err := io.ReadAll(file)
if err != nil {
Expand Down Expand Up @@ -310,7 +314,12 @@ func uploadHandler(contents []byte, node pinner.PinnerNode) (cid.Cid, error) {
return cid.Undef, err
}

defer carf.Close() // should delete the file due to unlink
defer func() {
if err := carf.Close(); err != nil {
log.Printf("failed to close car file: %v", err)
}
}()

defer func() {
err := syscall.Unlink(carf.Name())
if err != nil {
Expand All @@ -322,7 +331,10 @@ func uploadHandler(contents []byte, node pinner.PinnerNode) (cid.Cid, error) {

err = node.CarExporter().Export(ctx, fcid, carf)
if err != nil {
carf.Close()
// For the non-deferred calls:
if err := carf.Close(); err != nil {
log.Printf("failed to close car file: %v", err)
}
log.Printf("%v", err)
return cid.Undef, err
}
Expand All @@ -339,7 +351,9 @@ func uploadHandler(contents []byte, node pinner.PinnerNode) (cid.Cid, error) {
}
log.Printf("uploaded file has root cid: %s\n", ccid)

carf.Close()
if err := carf.Close(); err != nil {
log.Printf("failed to close car file: %v", err)
}
return ccid, nil
}

Expand Down

0 comments on commit ef8efc9

Please sign in to comment.