kubernetes/test/typecheck
Davanum Srinivas 12146cb4df
Do not include bazel related deps in root go.mod
- add ./hack/tools/go.mod, this makes ./hack/tools a distinct module
- hack/tools/tools.go undescore imports bazel related tools, over time we
can add others.
- hack/*.sh scripts will cd to hack/tools and go install tools from there

Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2020-04-19 22:01:50 -04:00
..
BUILD Update srcimporter.go to golang/go@5f0a9ba 2018-10-25 11:27:53 -07:00
main_test.go typecheck support setting tags, skipping test code, and ignoring directories 2019-12-04 22:30:23 -08:00
main.go Do not include bazel related deps in root go.mod 2020-04-19 22:01:50 -04:00
OWNERS add myself to typecheck / go-srcimporter owners, move rmmh to emeritus 2019-10-16 15:17:22 -07:00
README Correct owner's contact 2019-02-16 09:19:34 +07:00

Typecheck does cross-platform typechecking of source code for all Go build
platforms.

The primary benefit is speed: a full Kubernetes cross-build takes 20 minutes
and >40GB of RAM, while this takes under 2 minutes and <8GB of RAM.

It uses Go's built-in parsing and typechecking libraries (go/parser and
go/types), which unfortunately are not what the go compiler uses. Occasional
mismatches will occur, but overall they correspond closely.

Failures can be ignored if they don't block the build:

Things go/types errors on that go build doesn't:
  True errors (according to the spec):
    These should be fixed whenever possible. Ignore if a fix isn't possible
    or is in progress (e.g., vendored code).
    - unused variables in closures
  False errors:
    These should be ignored and reported upstream if applicable.
    - type checking mismatches between staging and generated types
Things go build fails on that we don't:
  - CGo errors, including syntax and linker errors.