Tooling
Comandos útiles
-
Para construir para el sistema operativo actual $ go build
-
Para construir para otro OS (windows en este caso) $ GOOS=windows go build
-
Para instalar (en
$GOPATH/bin/nombre) el binario ejecutable $ go install -
Dado un paquete, lo busca, lo descarga, lo compila y lo instala en bin (obviamente dentro de gopath) $ go get https://github.com/example/name
-
Para mostrar el origen del paquete actual $ go list
-
Podemos obtener infomración expecífica $ go list -f '{{ .Name }}: {{ .Doc }}'
-
Puedo ver los imports del paquete actual $ go list -f '{{ .Imports }}'
-
Puedo ver los imports de un paquete específico $ go list -f '{{ .Imports }}' fmt $ go list -f '{{ join .Imports "\n" }}' fmt
-
Para obtener la documentación $ go doc $ go doc fmt $ go doc fmt Printf
-
Podemos publicar toda la documentación q tenemos $ godoc -http :6060
-
Para verificar donde tenemos algún error no manejado (primero obtenerlo) $ go get -u github.com/kisielk/errcheck $ errcheck
-
Para verificar código que podría estar mal $ go vet
-
Para ver performance go-wrk (carga) $ go-wrk -d 5 http://localhost:8087/ariel@golang.org
-
Para hacer profiling importamos _ "net/http/pprof"
luego hacemos correr la carga y probamos: http://127.0.0.1:8087/debug/pprof/
Para analizar esos datos usamos (las pruebas de carga deben estar corriendo para que se haga el análisis): $ go tool pprof -seconds=5 http://localhost:8087/debug/pprof/profile
Cuando aparezca la consola, podemos ver un listado: (pprof) top
O mejor aún, verlo en la web: (pprof) web
-
Para ver flamegraphs $ go get github.com/uber/go-torch
-
Creamos benchamarks en el archivo de test y luego podemos hacerlo correr: Saquemos tiempos promedio por operación $ go test -bench .
-
Hagamos algo más con los benchmarks Saquemos un profile del cpu $ go test -bench . -cpuprofile prof.cpu
Para nuestro caso, hacemos correr con go-torch: $ go-torch --binaryname -b $ go-torch --binaryname tooling.test -b prof.cpu