From e799df9b4525349b0fcee51924a0877127655482 Mon Sep 17 00:00:00 2001 From: Thanatat Tamtan Date: Wed, 10 May 2023 17:52:25 +0700 Subject: [PATCH] ci: lint (#142) * add staticcheck and fix check error * use golangci-lint --- .github/workflows/test.yaml | 17 ++++++++++++++++- Makefile | 10 ++++++++++ pkg/authn/forward.go | 2 +- pkg/body/buffer.go | 9 ++++----- pkg/compress/deflate.go | 4 ++-- pkg/compress/gzip.go | 4 ++-- pkg/gcs/gcs.go | 2 +- pkg/internal/pool/pool.go | 11 ++++++----- pkg/prom/prom.go | 5 +++-- pkg/upstream/pool.go | 4 ++-- server.go | 1 - 11 files changed, 47 insertions(+), 22 deletions(-) create mode 100644 Makefile diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index e39f7be..1d410d2 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -2,8 +2,23 @@ name: Test on: push: pull_request: +permissions: + contents: read jobs: - runner-job: + lint: + name: lint + runs-on: ubuntu-latest + strategy: + matrix: + go: ['1.20'] + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-go@v4 + with: + go-version: ${{ matrix.go }} + - name: golangci-lint + uses: golangci/golangci-lint-action@v3 + test: runs-on: ubuntu-latest strategy: matrix: diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..9aca4a4 --- /dev/null +++ b/Makefile @@ -0,0 +1,10 @@ +default: vet lint test + +test: + go test -race ./... + +vet: + go vet ./... + +lint: + golangci-lint run diff --git a/pkg/authn/forward.go b/pkg/authn/forward.go index bec9f33..a8b9c99 100644 --- a/pkg/authn/forward.go +++ b/pkg/authn/forward.go @@ -120,7 +120,7 @@ func (m ForwardAuthenticator) ServeHandler(h http.Handler) http.Handler { buf := pool.Get() defer pool.Put(buf) - io.CopyBuffer(w, resp.Body, buf) + io.CopyBuffer(w, resp.Body, *buf) }, }.ServeHandler(h) } diff --git a/pkg/body/buffer.go b/pkg/body/buffer.go index 49175a3..5179323 100644 --- a/pkg/body/buffer.go +++ b/pkg/body/buffer.go @@ -4,7 +4,6 @@ import ( "bytes" "context" "io" - "io/ioutil" "log" "net/http" "os" @@ -35,7 +34,7 @@ func (m RequestBufferer) ServeHandler(h http.Handler) http.Handler { b := pool.Get() defer pool.Put(b) - n, err := io.ReadAtLeast(r.Body, b, int(r.ContentLength)) + n, err := io.ReadAtLeast(r.Body, *b, int(r.ContentLength)) if err == io.EOF { err = nil } @@ -45,7 +44,7 @@ func (m RequestBufferer) ServeHandler(h http.Handler) http.Handler { } r.Body.Close() - r.Body = ioutil.NopCloser(bytes.NewReader(b[:n])) + r.Body = io.NopCloser(bytes.NewReader((*b)[:n])) if r.Context().Err() == context.Canceled { return @@ -56,7 +55,7 @@ func (m RequestBufferer) ServeHandler(h http.Handler) http.Handler { } // case 3: body larger than buffer size or unknown size, then buffer to file - fp, err := ioutil.TempFile("", "request-*") + fp, err := os.CreateTemp("", "request-*") if err != nil { log.Println("can not create temp file;", err) @@ -70,7 +69,7 @@ func (m RequestBufferer) ServeHandler(h http.Handler) http.Handler { }() b := pool.Get() - _, err = io.CopyBuffer(fp, r.Body, b) + _, err = io.CopyBuffer(fp, r.Body, *b) pool.Put(b) if err == io.EOF { err = nil diff --git a/pkg/compress/deflate.go b/pkg/compress/deflate.go index ee6948a..afba08a 100644 --- a/pkg/compress/deflate.go +++ b/pkg/compress/deflate.go @@ -2,14 +2,14 @@ package compress import ( "compress/flate" - "io/ioutil" + "io" ) // Deflate creates new deflate compress middleware func Deflate() *Compress { return &Compress{ New: func() Compressor { - g, err := flate.NewWriter(ioutil.Discard, flate.DefaultCompression) + g, err := flate.NewWriter(io.Discard, flate.DefaultCompression) if err != nil { panic(err) } diff --git a/pkg/compress/gzip.go b/pkg/compress/gzip.go index ed80199..11dd987 100644 --- a/pkg/compress/gzip.go +++ b/pkg/compress/gzip.go @@ -2,14 +2,14 @@ package compress import ( "compress/gzip" - "io/ioutil" + "io" ) // Gzip creates new gzip compress middleware func Gzip() *Compress { return &Compress{ New: func() Compressor { - g, err := gzip.NewWriterLevel(ioutil.Discard, gzip.DefaultCompression) + g, err := gzip.NewWriterLevel(io.Discard, gzip.DefaultCompression) if err != nil { panic(err) } diff --git a/pkg/gcs/gcs.go b/pkg/gcs/gcs.go index 445cebc..5fbe670 100644 --- a/pkg/gcs/gcs.go +++ b/pkg/gcs/gcs.go @@ -97,7 +97,7 @@ func (m GCS) ServeHandler(h http.Handler) http.Handler { b := pool.Get() defer pool.Put(b) - io.CopyBuffer(w, reader, b) + io.CopyBuffer(w, reader, *b) } return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { diff --git a/pkg/internal/pool/pool.go b/pkg/internal/pool/pool.go index 12dc690..fbdd3e9 100644 --- a/pkg/internal/pool/pool.go +++ b/pkg/internal/pool/pool.go @@ -5,12 +5,12 @@ import ( ) // Get gets bytes from pool -func Get() []byte { - return bytesPool.Get().([]byte) +func Get() *[]byte { + return bytesPool.Get().(*[]byte) } // Put puts bytes back to pool -func Put(b []byte) { +func Put(b *[]byte) { bytesPool.Put(b) } @@ -22,7 +22,8 @@ func Size() int64 { const bufferSize = 16 * 1024 // 16 KiB var bytesPool = sync.Pool{ - New: func() interface{} { - return make([]byte, bufferSize) + New: func() any { + b := make([]byte, bufferSize) + return &b }, } diff --git a/pkg/prom/prom.go b/pkg/prom/prom.go index b3a7626..c3d4669 100644 --- a/pkg/prom/prom.go +++ b/pkg/prom/prom.go @@ -6,6 +6,7 @@ import ( "time" "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/client_golang/prometheus/collectors" "github.com/prometheus/client_golang/prometheus/promhttp" ) @@ -15,8 +16,8 @@ var reg = prometheus.NewRegistry() var Namespace = "parapet" func init() { - reg.MustRegister(prometheus.NewGoCollector()) - reg.MustRegister(prometheus.NewProcessCollector(prometheus.ProcessCollectorOpts{ + reg.MustRegister(collectors.NewGoCollector()) + reg.MustRegister(collectors.NewProcessCollector(collectors.ProcessCollectorOpts{ PidFn: func() (int, error) { return os.Getpid(), nil }, })) } diff --git a/pkg/upstream/pool.go b/pkg/upstream/pool.go index 3e84401..92ba69c 100644 --- a/pkg/upstream/pool.go +++ b/pkg/upstream/pool.go @@ -9,9 +9,9 @@ var bytesPool = &_bytesPool{} type _bytesPool struct{} func (p _bytesPool) Get() []byte { - return pool.Get() + return *pool.Get() } func (p _bytesPool) Put(b []byte) { - pool.Put(b) + pool.Put(&b) } diff --git a/server.go b/server.go index 92dec91..59e5565 100644 --- a/server.go +++ b/server.go @@ -21,7 +21,6 @@ import ( type Server struct { s http.Server once sync.Once - trackState sync.Once ms Middlewares onShutdown []func() modifyConn []func(conn net.Conn) net.Conn