Documentation ¶
Index ¶
Constants ¶
View Source
const C3_FP_layer int = 3
View Source
const C3_FP_ratio float32 = 0.5
View Source
const C3_Ratio float32 = 0.75
View Source
const C3_kill_FP_1 bool = true
View Source
const C3_kill_FP_2 bool = true // see if there is an Unlock that will definitely be executed after Lock
View Source
const C3_min_times_of_usage = 4
View Source
const C5A_kill_FP_1 bool = false
View Source
const C5_call_chain_layer int = 8 // Be careful: Algorithm complexity: e^n, n = C5_call_chain_layer
View Source
const C5_call_chain_max_fn int = 100000
View Source
const C5_kill_FP_1 bool = true
View Source
const C5_kill_FP_2 bool = true
View Source
const C5_kill_FP_3 bool = false // This can reduce a lot of FP but will also produce FN
View Source
const C5_kill_FP_4 bool = false // If callee is in builtin packages, skip
View Source
const C6A_call_chain_layer_for_chan_wrapper int = 3
View Source
const C6A_call_chain_layer_for_inside_CS int = 5 //CS is critical section
View Source
const C6A_call_chain_layer_for_lock_wrapper int = 5
View Source
const C6A_kill_FP_1 bool = false // ignore channels and conds not as field
View Source
const C6A_max_count_for_lock_wrapper int = 10000
View Source
const C6A_max_recursive_count = 5000
View Source
const C6A_wrapper_count = 50000000
View Source
const C6_kill_FP_1 bool = false
View Source
const C6_kill_FP_2 bool = true
View Source
const C7A_kill_FP_ignoreTest = false
View Source
const C7A_max_call_chain_length = 3
View Source
const C7A_max_layer = 3
View Source
const C7A_max_recursive_count = 50000
View Source
const C7B_max_call_path_length = 7
View Source
const C7B_max_layer = 7
View Source
const C7B_max_recursive_count = 5000
View Source
const C7_report_directly_usage bool = true
View Source
const CHA_CallGraph_Prune_SDK = true
View Source
const CHA_CallGraph_Prune_Soundly = true
View Source
const Kill_FP_avoid_multi_report = false // This should be set true before used by a company: give only 1 bug report for a channel/cond/...
View Source
const Max_in_edges = 100
View Source
const Pointer_consider_reflection = false
View Source
const Print_err_log = false
This file contains some key parameters.
Variables ¶
View Source
var Absolute_root string
View Source
var All_method []*ssa.Function
View Source
var All_pkg_paths []Path_stat
View Source
var All_struct []*Struct
View Source
var All_sync_global []*ssa.Global
View Source
var All_sync_struct []*Sync_struct
View Source
var Bug_index int
View Source
var Bug_index_mu sync.Mutex
View Source
var C3_Exclude_slice = []string{"init", "close", "start", "new", "lockfree", "shutdown"}
View Source
var C5_black_list_pkg = []string{}
View Source
var C6_Exclude_slice = []string{"init", "close", "shutdown", "start", "new"}
View Source
var CHA_Call_graph *callgraph.Graph
View Source
var Call_graph *callgraph.Graph
View Source
var Defer_map map[*ssa.RunDefers][]*ssa.Defer
View Source
var Entrance, Include string
View Source
var Exclude []string
View Source
var Flag_write_inst = false
View Source
var GOPATH string
View Source
var Inst2edge map[ssa.CallInstruction][]*callgraph.Edge
View Source
var Last_progress float32
View Source
var Num_scan_pkg_lock_send int
View Source
var Output_file *os.File
View Source
var Pkgs []*ssa.Package
View Source
var PointerAnalysisResult *mypointer.Result
View Source
var Process_count int
View Source
var Prog *ssa.Program
View Source
var Root string
View Source
var Static_call_graph *callgraph.Graph
View Source
var Target_GOPATH string
View Source
var Wg_B1 sync.WaitGroup
View Source
var Worthy_path []Parent_path
Functions ¶
This section is empty.
Types ¶
type C3_struct ¶
type C3_struct struct { Name string Field map[string](map[ssa.Instruction][]string) //map[field_name](map[inst_used_field][]str_alive_mutexs) }
type Inst_value ¶
type Inst_value struct { Inst ssa.Instruction Value ssa.Value Comment string }
type Operation ¶
type Operation struct { Position token.Position Instruction ssa.Instruction Type string }
type Parent_path ¶
type Sync_struct ¶
type Temp_struct ¶
Click to show internal directories.
Click to hide internal directories.