Further reading

  1. aligncheck: Identify inefficiently packed structs. URL: https://gitlab.com/opennota/check.
  2. bodyclose: A static analysis tool that checks whether res.Body is correctly closed. URL: https://github.com/timakin/bodyclose.
  3. copyfighter: Statically analyze Go code and report functions while passing large structs by value. URL: https://github.com/jmhodges/copyfighter.
  4. deadcode: Report unused blocks of code. URL: https://github.com/tsenart/deadcode.
  5. dupl: Report potentially duplicated blocks of code. URL: https://github.com/mibk/dupl.
  6. Effective Go: Tips for writing clear, idiomatic Go code.
  7. errcheck: Ensure that returned errors are checked. URL: https://github.com/kisielk/errcheck.
  8. Fowler, Martin: Refactoring: Improving the Design of Existing Code. Boston, MA, USA: Addison-Wesley, 1999 — ISBN 0-201-48567-2 (https://www.worldcat.org/title/refactoring-improving-the-design-of-existing-code/oclc/863697997).
  9. goconst: Flag repeated strings that can be replaced with constants. URL: https://github.com/jgautheron/goconst.
  10. gocyclo: Calculate cyclomatic complexity of code. URL: https://github.com/alecthomas/gocyclo.
  11. gofmt: Format Go programs or check that they are properly formatted. URL: https://golang.org/cmd/gofmt/.
  12. goimports: Update Go import lines by adding missing ones and removing unreferenced ones. URL: https://godoc.org/golang.org/x/tools/cmd/goimports.
  13. golangci-lint: Linter runner. URL: https://github.com/golangci/golangci-lint.
  14. golint: Report style issues in Go programs. URL: https://github.com/golang/lint.
  15. gomvpkg: Move Go packages and update import declarations. URL: https://godoc.org/golang.org/x/tools/cmd/gomvpkg.
  16. gorename: Perform precise type-safe renaming of identifiers in Go source code. URL: https://godoc.org/golang.org/x/tools/cmd/gorename.
  1. gosec: Scan source code for potential security issues. URL: https://github.com/securego/gosec.
  2. gosimple: Report code that can be potentially simplified. URL: https://github.com/dominikh/go-tools/tree/master/cmd/gosimple.
  3. gosumcheck: Ensure that all possible types in a type switch are properly handled. URL: https://github.com/haya14busa/gosum.
  4. go vet: Examine Go source code and report suspicious constructs, such as printf calls whose arguments do not align with the format string or shadowed variables. URL: https://golang.org/cmd/vet/.
  5. ineffassign: Detect variable assignments that are not being used. URL: https://github.com/gordonklaus/ineffassign.
  6. Liskov, Barbara: Keynote Address Data Abstraction and Hierarchy. In: Addendum to the Proceedings on Object-oriented Programming Systems, Languages and Applications (Addendum), OOPSLA '87. New York, NY, USA : ACM, 1987 — ISBN 0-89791-266-7 (https://www.worldcat.org/title/oopsla-87-addendum-to-the-proceedings-object-oriented-programming-systems-languages-and-applications-october-4-8-1987-orlando-florida/oclc/220450625), S. 17–34.
  7. Martin, Robert C.: Clean Architecture: A Craftsman's Guide to Software Structure and Design, Robert C. Martin Series. Boston, MA: Prentice Hall, 2017 — ISBN 978-0-13-449416-6 (https://www.worldcat.org/title/clean-architecture-a-craftsmans-guide-to-software-structure-and-design-first-edition/oclc/1105785924).
  8. Meyer, Bertrand: Object-Oriented Software Construction. 1st. Aufl. Upper Saddle River, NJ, USA: Prentice-Hall, Inc., 1988 — ISBN 0136290493 (https://www.worldcat.org/title/object-oriented-software-construction/oclc/1134860513).
  9. misspell: Check source code for spelling mistakes. URL: https://github.com/client9/misspell.
  10. prealloc: Identify slice declarations that could be pre-allocated. URL: https://github.com/alexkohler/prealloc.
  11. revive: A stricter, configurable, extensible, and beautiful drop-in replacement for golint. URL: https://github.com/mgechev/revive.
  12. safesql: Checks code for potential SQL injection points. URL: https://github.com/stripe/safesql.
  13. splint: Identify functions that are too long or receive too many arguments. URL: https://github.com/stathat/splint.
  1. structcheck: Identify unused struct fields. URL: https://gitlab.com/opennota/check.
  2. unconvert: Detect unnecessary type conversions. URL: https://github.com/mdempsky/unconvert.
  3. unindent: Identify code that is incorrectly indented. URL: https://github.com/mvdan/unindent.
  4. unparam: Detect unused function parameters. URL: https://github.com/mvdan/unparam.
  5. varcheck: Detect unused variables and constants. URL: https://github.com/opennota/check.