Documentation
¶
Index ¶
Constants ¶
View Source
const Version = "v0.5.0"
Version is the last tagged version of the analysis tool
Variables ¶
This section is empty.
Functions ¶
func ClosureLocationsStats ¶
func ClosureLocationsStats(log *log.Logger, functions *map[*ssa.Function]bool, withPkgPrefix string)
ClosureLocationsStats logs information about the number of closures in each function in the map, focusing on those functions whose package name starts with interestPrefix
Types ¶
type ClosureUsageStatistics ¶
type ClosureUsageStatistics struct {
// AnonsCapturingChannels is the set of anonymous functions capturing channels
AnonsCapturingChannels map[*ssa.Function]bool
// TotalAnonCalls is the total number of anonymous functions called
TotalAnonCalls int
// TotalAnonFunctions is the total number of anonymous functions defined
TotalAnonFunctions int
// TotalMakeClosures is the total number of closure creations
TotalMakeClosures int
// ClosuresCalled maps call instructions to the instruction where the closure is created
ClosuresCalled map[ssa.CallInstruction]ssa.Instruction
// ClosuresImmediatelyCalled is the set of instructions where a closure is immediately called
ClosuresImmediatelyCalled map[ssa.Instruction]bool
// ClosuresNoClass is the set of closures that have not been classified in ClosuresImmediatelyCalled,
// ClosuresPassedAsArgs or ClosuresReturned
ClosuresNoClass map[ssa.Instruction]bool
// ClosuresPassedAsArgs is the set of call instructions where a closure is passed as an argument
ClosuresPassedAsArgs map[ssa.CallInstruction]ssa.Instruction
// ClosuresReturned is the set of instructions where a closure is being returned by a function
ClosuresReturned map[ssa.Instruction]bool
}
ClosureUsageStatistics is a simple record that contains information about usage of closures in a program
func ComputeClosureUsageStats ¶
func ComputeClosureUsageStats(state *dataflow.State) (ClosureUsageStatistics, error)
ComputeClosureUsageStats computes statistics about the usage of closures in the program contained in the state. This requires the pointer analysis to have been computed in the state.
type DeferStatsResult ¶
type DeferStatsResult struct {
NumFunctionsWithDefers int
NumDefers int
NumRunDefers int
FunctionsWithManyDefers map[string]DeferStat
}
DeferStatsResult holds the information gathered by DeferStats on defers
func DeferStats ¶
func DeferStats(functions *map[*ssa.Function]bool) DeferStatsResult
DeferStats logs information about the number of defers in each functions in the map
Directories
¶
| Path | Synopsis |
|---|---|
|
Package backtrace defines a dataflow analysis that finds all the backwards dataflow paths from an entrypoint.
|
Package backtrace defines a dataflow analysis that finds all the backwards dataflow paths from an entrypoint. |
|
Package config provides a simple way to manage configuration files.
|
Package config provides a simple way to manage configuration files. |
|
Package dataflow implements the core of the dataflow analysis.
|
Package dataflow implements the core of the dataflow analysis. |
|
Package defers implements an analysis that determines which set of defer instructions can reach each program point.
|
Package defers implements an analysis that determines which set of defer instructions can reach each program point. |
|
Package escape provides an escape analysis which computes a representation of which references in the program are to objects that are local to the current function and goroutine.
|
Package escape provides an escape analysis which computes a representation of which references in the program are to objects that are local to the current function and goroutine. |
|
Package lang contains functions to help manipulate different objects representing elements of the Go language and the ssa.
|
Package lang contains functions to help manipulate different objects representing elements of the Go language and the ssa. |
|
Package render provides functions to build an inter-procedural dataflow graph.
|
Package render provides functions to build an inter-procedural dataflow graph. |
|
Package summaries defines how data flow information can be summarized for a given function.
|
Package summaries defines how data flow information can be summarized for a given function. |
|
Package syntactic contains syntactic analyses.
|
Package syntactic contains syntactic analyses. |
|
structinit
Package structinit implements the struct initialization syntactic analysis.
|
Package structinit implements the struct initialization syntactic analysis. |
|
Package taint implements most of the taint analysis functionality.
|
Package taint implements most of the taint analysis functionality. |
Click to show internal directories.
Click to hide internal directories.