Documentation ¶
Index ¶
- Variables
- func AllCallCase(n ast.Node, todo func(call *ast.CallExpr) bool) (find bool)
- func BuildFromCallMap(head *MWTNode, callMap map[string]CallerRelation)
- func WalkDir(dirPth, suffix string) (files []string, err error)
- type CalledRelation
- type CallerRelation
- type FindContext
- type FixContext
- type Fixed
- type FuncDesc
- type GenFuncType
- type MWTNode
Constants ¶
This section is empty.
Variables ¶
View Source
var Analysis *analysis
View Source
var GFixedFunc map[string]Fixed //key的格式为Package.Func
View Source
var GFset *token.FileSet //全局存储token的position
Functions ¶
func AllCallCase ¶
调用函数的N种情况 对函数调用使用todo适配,并返回是否适配成功
func BuildFromCallMap ¶
func BuildFromCallMap(head *MWTNode, callMap map[string]CallerRelation)
Types ¶
type CalledRelation ¶
描述关键函数的一条反向调用关系
type CallerRelation ¶
描述一个函数调用N个函数的一对多关系
type FindContext ¶
func (*FindContext) FindCallFunc ¶
func (f *FindContext) FindCallFunc(call *ast.CallExpr) bool
type FixContext ¶
type FixContext struct { Type GenFuncType File string Package string LocalFunc *ast.FuncDecl TargetFunc FuncDesc //希望自动修复的函数 CalleeFunc FuncDesc //上述函数调用的下一级函数 }
主要用于将调用链里面的nil替换为ctx 并判断填充父函数的行参context.Context 并在源头函数生成Context的起点
func (*FixContext) FixCallFunc ¶
func (f *FixContext) FixCallFunc(call *ast.CallExpr) bool
如果是关键函数: 查看关键函数内部是否是nil值填充的调用链,如果是,就将nil替换为ctx 如果是传递函数或者源头函数: 在调用处插入第一个ctx参数,区分跨package和本package两种情况
func (*FixContext) FixLocalunc ¶
func (f *FixContext) FixLocalunc()
关键函数和传递函数如果没有context,需要加在第一个入参,并记录后递归向上查询 源头函数如果没有产生ctx,则需要自动生成一个
type Fixed ¶
type Fixed struct { FuncDesc RelationsTree *MWTNode //反向调用关系,可能有多条调用链到达关键函数 RelationList []CalledRelation CanFix bool //能反向找到gin.Context即可以自动修复 }
关键函数定义
Click to show internal directories.
Click to hide internal directories.