Reference
Configurations
Configurations are set in a configuration file named .coderrect.json. This configuration file should be placed in the directory where Coderrect is called.
Each configuration setting can only appear once in a configuration file, for example, you can NOT have multiple skipFunctions sections in a configuration file.
Command Line Options (by function groups)
Command line | description |
---|---|
BASIC OPTIONS | |
-h, -help |
Print help information |
-v, -version |
Print version information |
-showconf |
Print configurations |
PROCESS CONTROL | |
-bcPaths=/path/to/bcFileFolder1,/path/to/BCFilefolder2, -p paths |
Specify a list of paths separated by comma. These paths contain ./coderrect/build where BC files that aren't generated by the build process may reside |
-cleanBuild, -c | Remove all intermediate files generated by the last run of build. |
-analyzeAll |
Analyze all qualified binaries generated by build. |
-analyzeBinaries=[a],[b],... |
Only analyze a list of given binaries |
-continueIfBuildErrorPresents |
Continue the analysis even though there are build errors. |
-conf=path/to/custom_conf | Specify a custom configuration file whose settings will be combined with settings in the default global coderrect.json, $HOME/.coderrect.json, and $projectDir/coderrect.json. The settings in this file override settings in other files. |
DETECTION ALGORITHM | |
-mode=[normal][fast][exhaust] |
Set analyzing modes: |
-enableOpenMP |
Enable OpenMP race detection |
-enableAtomicityViolation |
Enable atomicity violation detection |
-enableOrderViolation |
Enable order violation detection |
-enableMissingAPI |
Enable missing call pairs detection |
-enableFilter |
Enable filters to filter out potential false positives based on a set of heuristics |
-raceLimit=[value] |
Specify the up limit of how many races detected will be reported. |
REPORT | |
-report.outputDir=/path/to/report, -o /path/to/report |
Specify where to generate the report |
-report.enableTerminal, -t |
Generate the terminal-based report. |
LOGGER | |
-logger.level=[debug][info][warn][error][fatal] |
Set the minimum logging level. It supports five levels: |
-logger.logFolder=/../logFolder |
Specify the folder to store log files |
-logger.maximumLogFileCount=[value] |
Specify maximum number of log files to keep |
-logger.maximumLogFileSize=[value] |
Specify the maximum size (in MB) of a log file. When the size of a log file reaches this limit, logger will close this file and create a new file. |
-logger.toStderr |
Specify if the logger prints logging messages to STDERR |
OPEN LIBRARY | |
-openlib.analyzeAPI |
Analyze a library and print out its published functions |
-openlib.limit=[value] |
Specify the limit on the number of APIs to be analyzed |
Configurations to control the race detection algorithm
Skip Functions
Config Coderrect to skip specified functions during race analysis.
"skipFunctions":[
"FunctionName*",
"FunctionOther"
]
Check out a tutorial uses this configuration here
Indirect Functions
Config Coderrect to analyze all possible targets called in specified functions.
"indirectFunctions":[
"FunctionName*",
"FunctionOther"
]
Check out a tutorial uses this configuration here
Ignore Races in Functions
Config Coderrect to skip analysis specified functions.
"ignoreRacesInFunctions":[
"std::*"
"FunctionName*",
"FunctionName2"
]
This configuration by default is set to skip all functions matching std::*.
Check out a tutorial uses this configuration here
Ignore Races at Locations
Config Coderrect to skip analysis on specified locations, i.e. filename and line numbers.
"ignoreRacesAtLocations": [
"items.c:1277",
"extstore.c:493"
],
Check out a tutorial uses this configuration here
Ignore Races by Variable Name
Config Coderrect to skip analysis on specified variables.
"ignoreRaceVariables":[
"VariableName*",
"VariableOtherName"
]
Check out a tutorial uses this configuration here
Set Low Priority Files
Races detected in specified files are set to a lower priority in the report, and shown lower in the report.
"lowPriorityFiles":[
"FileName*",
"FileNameOther"
]
Check out a tutorial uses this configuration here
Set High Priority Files
Races detected in specified files are set to a higher priority in the report, and shown lower in the report.
"highPriorityFiles":[
"FileName*",
"FunctionNameOther"
]
Check out a tutorial uses this configuration here
Set Low Priority Races
Races detected in specified variables are set to a lower priority in the report, and shown lower in the report.
"lowPriorityRaces":[
"VariableName*",
"VariableNameOther"
]
Check out a tutorial uses this configuration here
Set High Priority Races
Races detected in specified variables are set to a higher priority in the report, and shown lower in the report.
"highPriorityRaces":[
"VariableName*",
"VariableNameOther"
]
Check out a tutorial uses this configuration here
Mark Heap Allocation Functions
Specify functions to be treated as allocating memory.
"heapAllocFunctions":[
"je_malloc",
"je_calloc",
"je_mallocx",
"rm_malloc",
"rm_calloc"
]
The setting show in the above example is the default setting.
Set Entry Points to Analyze Libraries
Specify entry points for libraries without a main function.
"openlib": {
"entryPoints":[
"FunctionName*",
"FunctionNameOther"
]
}
Check out a tutorial uses this configuration here
Specify Custom Lock/Unlock APIs
Specify a list of custom lock/unlock APIs so that Coderrect can make corrrect reasoning.
"lockUnlockFunctions": {
"MySpinLock": "MySpinUnlock",
"MyMutexLock": "MyMutexUnlock"
}
Check out a tutorial uses this configuration here
The default global configuration file
You can find the default global configuration file “coderrect.json” under $installDir/conf.
{
"logger": {
"level": "debug",
"logFolder": "logs",
"maximumLogFileCount": 8,
"maximumLogFileSize": 128,
"toStderr": false
},
"report": {
"enableTerminal": false,
"//ouputDir": "please remove // and set the right path here"
},
"cleanBuild": false,
"analyzeAllBinaries": false,
"continueIfBuildErrorPresents": false,
"//bcPaths": "Remove // and specify a list of comma-separated paths",
"//analyzeBinaries": "Remove // and specify a list of comma-separated binary names",
"publishResults": false,
"mode": "normal",
"enableOpenMP": true,
"enableOrderViolation": true,
"enableAtomicityViolation": true,
"enableMissingAPI": true,
"enableFilter": true,
"enableLockSet": true,
"enableLoopUnroll": true,
"raceLimit": 25,
"skipFunctions": [],
"indirectFunctions": [],
"ignoreRacesInFunctions": [
"std::*"
],
"ignoreRacesAtLocations": [],
"ignoreRaceVariables": [],
"lowPriorityFiles": [],
"lowPriorityRaces": [],
"highPriorityRaces": [],
"heapAllocFunctions": [
"je_malloc",
"je_calloc",
"je_mallocx",
"rm_malloc",
"rm_calloc"
],
"lockUnlockFunctions": {},
"notParallelFunctionPairs": {}
"highPriorityFiles": [],
"lowPriorityFiles": [],
"highPriorityRaces": [],
"lowPriorityRaces": [],
"openlib": {
"entryPoints": [],
"limit": 999,
}
}