Skip to content

Instantly share code, notes, and snippets.

@tamalsaha
Last active October 24, 2019 21:31
Show Gist options
  • Save tamalsaha/09ef90fb9d652e753f538a965eb4c3d8 to your computer and use it in GitHub Desktop.
Save tamalsaha/09ef90fb9d652e753f538a965eb4c3d8 to your computer and use it in GitHub Desktop.
Linter fixes

Regular Code

utilruntime "k8s.io/apimachinery/pkg/util/runtime"

func Must(err error) {
	if err != nil {
		panic(err)
	}
}

_, err := Write(data)

1. return err

// almost never
2. utilruntime.Must(err)

`utilruntime.Must(scheme.AddToScheme(clientsetscheme.Scheme))`

// almost never
3. 
if err != nil {
	log.Fatal(err)
}

You should use #2 or #3 based on the pattern present on that file. If neither is present, use #2 .

Test

1. return err


2. // fail test if error

if err != nil {
	t.Fail(err)
}

3. Must(err)

4. _, _ = w.Write([]byte(authResp))

defer function that returns error

func doStuff() error { ... }

defer doStuff()

https://github.com/kubernetes-sigs/cluster-api/blob/f93b579abf455e43003d4ccb9464afe5cc8ca12e/cmd/clusterctl/clusterdeployer/clusterdeployer.go#L71-L75

# preferred fix in regular code and test code:
defer func() {
	if err := cleanupBootstrapCluster(); err != nil && reterr == nil {
		reterr = err
	}
}()

# ok in TEST code
defer func(){
   Must(doStuff()) 
}()

# Last option
defer doStuff() //nolint:errcheck
@tamalsaha
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment