Skip to content

Latest commit

 

History

History
61 lines (52 loc) · 3.8 KB

File metadata and controls

61 lines (52 loc) · 3.8 KB

Running the Analyzer

The analyzer can be run on either individual files or on an entire directory. To run it on an individual file, you should use the --filePath command line argument. For instance:

go run ast-search.go --filePath sample/goroutines/mem-benchmark.go --output results.csv

To run the analyzer on a directory containing .go files, you should use the --dirPath command line argument. For instance:

go run ast-search.go --dirPath sample --output results.csv

Results of the analysis will be stored in the CSV file given using the --output command line argument.

The file itself contains the following information:

Column Description
fileName The absolute path of the analyzed file
waitGroupDecls The # of WaitGroup declarations
condDecls The # of Condition variable declarations
onceDecls The # of Once declarations
mutexDecls The # of Mutex declarations
rwMutexDecls The # of RWMutex declarations
lockerDecls The # of Locker declarations
waitGroupDone The # of calls to Done on a WaitGroup
waitGroupAdd The # of calls to Add on a WaitGroup
waitGroupWait The # of calls to Wait on a WaitGroup
mutexLock The # of calls to Lock on a Mutex
mutexUnlock The # of calls to Unlock on a Mutex
rwMutexLock The # of calls to Lock on a RWMutex
rwMutexUnlock The # of calls to Unlock on a RWMutex
lockerLock The # of calls to Lock on a Locker
lockerUnlock The # of calls to Unlock on a Locker
condLock The # of calls to Lock on a Locker held by a Condition variable
condUnlock The # of calls to Unlock on a Locker held by a Condition variable
condWait The # of calls to Wait on a Condition variable
condSignal The # of calls to Signal on a Condition variable
condBroadcast The # of calls to Broadcast on a Condition variable
condNew The # of calls to NewCond
onceDo The # of calls to Do on a Once
unknownDone The # of uncategorized calls to Done
unknownAdd The # of uncategorized calls to Add
unknownWait The # of uncategorized calls to Wait
unknownLock The # of uncategorized calls to Lock
unknownUnlock The # of uncategorized calls to Unlock
unknownSignal The # of uncategorized calls to Signal
unknownBroadcast The # of uncategorized calls to Broadcast
unknownDo The # of uncategorized calls to Do

Note that calls categorized as "unknown" may be completely unrelated to concurrency. For instance, a function named Do, called on a custom type, would be categorized as "unknownDo", as would a call on a Once value if the analysis cannot determine a Once value is the target.