diff --git a/CodeTools.md b/CodeTools.md new file mode 100644 index 00000000..a35936d2 --- /dev/null +++ b/CodeTools.md @@ -0,0 +1,65 @@ +An overview of tools that will help improve your Go code + +## All-in-one + + - [golangci-lint](https://github.com/golangci/golangci-lint) - Bundle of `gofmt`, `golint`, `govet` and many other tools that shares work between the different linters for better performance. Recommended by the original author to replace gometalinter (Drop-in replacement). + - DEPRECATED: [gometalinter](https://github.com/alecthomas/gometalinter) - Automates the installation, configuration and application of `gofmt`, `golint`, `govet` and several other code validation tools. + +## Code Formatting + +### Articles + + - [Formatting Go Code with gofmt](http://golangtutorials.blogspot.com/2011/06/formatting-go-code-with-gofmt.html) + +### Tools + + - [gofmt](https://golang.org/cmd/gofmt/) - Start with the standard Go code formatter + - [golint](https://github.com/golang/lint) - Detects style mistakes in Go code + - [goimports](https://godoc.org/golang.org/x/tools/cmd/goimports) - Format code and fix your import statements + - [revive](https://github.com/mgechev/revive) - Fast, configurable, extensible, flexible, and beautiful linter for Go + +## Code generation, Templating and Generics + + - [json-to-go](https://mholt.github.io/json-to-go/) - Generate Go structs from JSON. + - [Go gen](http://clipperhouse.github.io/gen/) - Type-driven code generation (generics) + - [gojson](https://github.com/ChimeraCoder/gojson) - Another Go struct generator. + - [gotemplate](https://github.com/ncw/gotemplate) - Package-based templating system for Go + - [sqlgen](https://github.com/drone/sqlgen) - Generate Go code for SQL interactions. + - [zek](https://github.com/miku/zek) - Generate Go struct from XML. + +## Refactoring + +### Articles + + - [Refactoring with go fmt](http://spf13.com/post/go-fmt/) + - [gorename - easy refactoring](https://texlution.com/post/gorename/) + - [Refactoring Tools](http://blog.ralch.com/tutorial/golang-tools-refactoring/) - An overview of refactoring tools for Go. + - [Quick renaming with gofmt](http://technosophos.com/2015/09/26/quick-go-hack-renaming-structs.html) + +### Tools + +- [eg](https://godoc.org/golang.org/x/tools/cmd/eg) - Example-based refactoring tool for Go +- [gofmt](https://golang.org/cmd/gofmt/) - Start with the standard Go code formatter +- [gorename](https://golang.org/x/tools/refactor/rename) - Renaming tool for Go + +## Error Detection + +### Articles + + - [Go Inspection Tools](http://blog.ralch.com/tutorial/golang-tools-inspection/) - An overview of tools for Go code inspection. + +### Tools + + - [AlignCheck, StructCheck, VarCheck](https://github.com/opennota/check/) - A suite of tools for checking your code. + - [errcheck](https://github.com/kisielk/errcheck) - Ensure you check your error conditions. + - [go vet](http://golang.org/cmd/vet/) - Read this first on how to use the `go vet` command. + - [SafeSQL](https://github.com/stripe/safesql) - Protect against unsafe SQL in your code. + +## Navigation + + - [Go Guru - User Manual](https://golang.org/s/using-guru) - A tool for understanding Go code. + - [Pythia](https://github.com/fzipp/pythia) - A browser-based UI for Go Guru. + +## Visualization + + - [godegraph](http://github.com/kisielk/godepgraph) - A tool for generating dependency graphs of Go code.