kubernetes/test/typecheck
Chris Bandy 2e76ac31fd Replace os.Setenv with testing.T.Setenv in tests
T.Setenv ensures that the environment is returned to its prior state
when the test ends. It also panics when called from a parallel test to
prevent racy test interdependencies.
2023-06-05 21:08:56 -05:00
..
testdata Rewrite typecheck against x/tools/go/packages 2020-06-26 11:12:06 -07:00
main_test.go Replace os.Setenv with testing.T.Setenv in tests 2023-06-05 21:08:56 -05:00
main.go Avoid typechecking stdlib 2023-01-28 23:32:50 -05:00
OWNERS Check in OWNERS modified by update-yamlfmt.sh 2021-12-09 21:31:26 -05: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.