...
Package rta
Overview ▹
Index ▹
type Result ¶
A Result holds the results of Rapid Type Analysis, which includes the set of reachable functions/methods, runtime types, and the call graph.
type Result struct { // CallGraph is the discovered callgraph. // It does not include edges for calls made via reflection. CallGraph *callgraph.Graph // Reachable contains the set of reachable functions and methods. // This includes exported methods of runtime types, since // they may be accessed via reflection. // The value indicates whether the function is address-taken. // // (We wrap the bool in a struct to avoid inadvertent use of // "if Reachable[f] {" to test for set membership.) Reachable map[*ssa.Function]struct{ AddrTaken bool } // RuntimeTypes contains the set of types that are needed at // runtime, for interfaces or reflection. // // The value indicates whether the type is inaccessible to reflection. // Consider: // type A struct{B} // fmt.Println(new(A)) // Types *A, A and B are accessible to reflection, but the unnamed // type struct{B} is not. RuntimeTypes typeutil.Map }
func Analyze ¶
func Analyze(roots []*ssa.Function, buildCallGraph bool) *Result
Analyze performs Rapid Type Analysis, starting at the specified root functions. It returns nil if no roots were specified.
If buildCallGraph is true, Result.CallGraph will contain a call graph; otherwise, only the other fields (reachable functions) are populated.