aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/sonatard/noctx/reqwithoutctx
diff options
context:
space:
mode:
authorTaras Madan <tarasmadan@google.com>2025-01-22 16:07:17 +0100
committerTaras Madan <tarasmadan@google.com>2025-01-23 10:42:36 +0000
commit7b4377ad9d8a7205416df8d6217ef2b010f89481 (patch)
treee6fec4fd12ff807a16d847923f501075bf71d16c /vendor/github.com/sonatard/noctx/reqwithoutctx
parent475a4c203afb8b7d3af51c4fd32bb170ff32a45e (diff)
vendor: delete
Diffstat (limited to 'vendor/github.com/sonatard/noctx/reqwithoutctx')
-rw-r--r--vendor/github.com/sonatard/noctx/reqwithoutctx/main.go14
-rw-r--r--vendor/github.com/sonatard/noctx/reqwithoutctx/report.go26
-rw-r--r--vendor/github.com/sonatard/noctx/reqwithoutctx/ssa.go184
3 files changed, 0 insertions, 224 deletions
diff --git a/vendor/github.com/sonatard/noctx/reqwithoutctx/main.go b/vendor/github.com/sonatard/noctx/reqwithoutctx/main.go
deleted file mode 100644
index b09e1de1b..000000000
--- a/vendor/github.com/sonatard/noctx/reqwithoutctx/main.go
+++ /dev/null
@@ -1,14 +0,0 @@
-package reqwithoutctx
-
-import (
- "golang.org/x/tools/go/analysis"
-)
-
-func Run(pass *analysis.Pass) (interface{}, error) {
- analyzer := NewAnalyzer(pass)
- reports := analyzer.Exec()
-
- report(pass, reports)
-
- return nil, nil
-}
diff --git a/vendor/github.com/sonatard/noctx/reqwithoutctx/report.go b/vendor/github.com/sonatard/noctx/reqwithoutctx/report.go
deleted file mode 100644
index 3bf2ea01f..000000000
--- a/vendor/github.com/sonatard/noctx/reqwithoutctx/report.go
+++ /dev/null
@@ -1,26 +0,0 @@
-package reqwithoutctx
-
-import (
- "go/token"
-
- "golang.org/x/tools/go/analysis"
- "golang.org/x/tools/go/ssa"
-)
-
-type Report struct {
- Instruction ssa.Instruction
-}
-
-func (n *Report) Pos() token.Pos {
- return n.Instruction.Pos()
-}
-
-func (n *Report) Message() string {
- return "should rewrite http.NewRequestWithContext or add (*Request).WithContext"
-}
-
-func report(pass *analysis.Pass, reports []*Report) {
- for _, report := range reports {
- pass.Reportf(report.Pos(), "%s", report.Message())
- }
-}
diff --git a/vendor/github.com/sonatard/noctx/reqwithoutctx/ssa.go b/vendor/github.com/sonatard/noctx/reqwithoutctx/ssa.go
deleted file mode 100644
index 62707c6b5..000000000
--- a/vendor/github.com/sonatard/noctx/reqwithoutctx/ssa.go
+++ /dev/null
@@ -1,184 +0,0 @@
-package reqwithoutctx
-
-import (
- "fmt"
- "go/types"
-
- "github.com/gostaticanalysis/analysisutil"
- "golang.org/x/tools/go/analysis"
- "golang.org/x/tools/go/analysis/passes/buildssa"
- "golang.org/x/tools/go/ssa"
-)
-
-//nolint:govet
-type Analyzer struct {
- Funcs []*ssa.Function
- newRequestType types.Type
- requestType types.Type
-}
-
-func NewAnalyzer(pass *analysis.Pass) *Analyzer {
- newRequestType := analysisutil.TypeOf(pass, "net/http", "NewRequest")
- requestType := analysisutil.TypeOf(pass, "net/http", "*Request")
-
- ssa, ok := pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA)
- if !ok {
- panic(fmt.Sprintf("%T is not *buildssa.SSA", pass.ResultOf[buildssa.Analyzer]))
- }
-
- return &Analyzer{
- Funcs: ssa.SrcFuncs,
- newRequestType: newRequestType,
- requestType: requestType,
- }
-}
-
-func (a *Analyzer) Exec() []*Report {
- if a.newRequestType == nil || a.requestType == nil {
- return []*Report{}
- }
-
- usedReqs := a.usedReqs()
- newReqs := a.requestsByNewRequest()
-
- return a.report(usedReqs, newReqs)
-}
-
-func (a *Analyzer) report(usedReqs map[string]*ssa.Extract, newReqs map[*ssa.Call]*ssa.Extract) []*Report {
- var reports []*Report
-
- for _, fReq := range usedReqs {
- for newRequest, req := range newReqs {
- if fReq == req {
- reports = append(reports, &Report{Instruction: newRequest})
- }
- }
- }
-
- return reports
-}
-
-func (a *Analyzer) usedReqs() map[string]*ssa.Extract {
- reqExts := make(map[string]*ssa.Extract)
-
- for _, f := range a.Funcs {
- for _, b := range f.Blocks {
- for _, instr := range b.Instrs {
- switch i := instr.(type) {
- case *ssa.Call:
- exts := a.usedReqByCall(i)
- for _, ext := range exts {
- key := i.String() + ext.String()
- reqExts[key] = ext
- }
- case *ssa.UnOp:
- ext := a.usedReqByUnOp(i)
- if ext != nil {
- key := i.String() + ext.String()
- reqExts[key] = ext
- }
- case *ssa.Return:
- exts := a.usedReqByReturn(i)
- for _, ext := range exts {
- key := i.String() + ext.String()
- reqExts[key] = ext
- }
- }
- }
- }
- }
-
- return reqExts
-}
-
-func (a *Analyzer) usedReqByCall(call *ssa.Call) []*ssa.Extract {
- args := call.Common().Args
- exts := make([]*ssa.Extract, 0, len(args))
-
- // skip net/http.Request method call
- if recv := call.Common().Signature().Recv(); recv != nil && types.Identical(recv.Type(), a.requestType) {
- return exts
- }
-
- if len(args) == 0 {
- return exts
- }
-
- for _, arg := range args {
- ext, ok := arg.(*ssa.Extract)
- if !ok {
- continue
- }
-
- if !types.Identical(ext.Type(), a.requestType) {
- continue
- }
-
- exts = append(exts, ext)
- }
-
- return exts
-}
-
-func (a *Analyzer) usedReqByUnOp(op *ssa.UnOp) *ssa.Extract {
- if ext, ok := op.X.(*ssa.Extract); ok && types.Identical(ext.Type(), a.requestType) {
- return ext
- }
-
- return nil
-}
-
-func (a *Analyzer) usedReqByReturn(ret *ssa.Return) []*ssa.Extract {
- rets := ret.Results
- exts := make([]*ssa.Extract, 0, len(rets))
-
- for _, ret := range rets {
- ext, ok := ret.(*ssa.Extract)
- if !ok {
- continue
- }
-
- if types.Identical(ext.Type(), a.requestType) {
- exts = append(exts, ext)
- }
- }
-
- return exts
-}
-
-func (a *Analyzer) requestsByNewRequest() map[*ssa.Call]*ssa.Extract {
- reqs := make(map[*ssa.Call]*ssa.Extract)
-
- for _, f := range a.Funcs {
- for _, b := range f.Blocks {
- for _, instr := range b.Instrs {
- ext, ok := instr.(*ssa.Extract)
- if !ok {
- continue
- }
-
- if !types.Identical(ext.Type(), a.requestType) {
- continue
- }
-
- operands := ext.Operands([]*ssa.Value{})
- if len(operands) != 1 {
- continue
- }
-
- operand := *operands[0]
-
- f, ok := operand.(*ssa.Call)
- if !ok {
- continue
- }
-
- if types.Identical(f.Call.Value.Type(), a.newRequestType) {
- reqs[f] = ext
- }
- }
- }
- }
-
- return reqs
-}