kubernetes/test/typecheck
Jordan Liggitt e92a4debcb
Fix lint warning about unchecked error
2024-01-22 20:45:26 -08:00
..
testdata
OWNERS Check in OWNERS modified by update-yamlfmt.sh 2021-12-09 21:31:26 -05:00
README
main.go Fix lint warning about unchecked error 2024-01-22 20:45:26 -08:00
main_test.go Replace os.Setenv with testing.T.Setenv in tests 2023-06-05 21:08:56 -05:00

README

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.