Currently, the FunctionCall table contains 3 columns: CallerFunctionID, CalledFunctionID, CallSite.
In case of having macros, the CallSite column would have 2 locations: the actual location and the spelling location.
For example:
File1.cpp would have the following line: CREATEFile2.cpp would have the following line:#define CREATE void a() {b->a()}
In that case the first location in the CallSite column would be File1.cpp, and the spelling location would be File2.cpp. The total value in the column would be: File1.cpp <Spelling=File2.cpp>. Since, this format is hard to make use of when analyzing data in SQL, the plan is to create another column called SpellingLocation in FunctionCall that can be null if this is not the case.
Currently, the
FunctionCall
table contains 3 columns:CallerFunctionID
,CalledFunctionID
,CallSite
. In case of having macros, theCallSite
column would have 2 locations: the actual location and the spelling location.For example: File1.cpp would have the following line:
CREATE
File2.cpp would have the following line:#define CREATE void a() {b->a()}
In that case the first location in the
CallSite
column would be File1.cpp, and the spelling location would be File2.cpp. The total value in the column would be:File1.cpp <Spelling=File2.cpp>
. Since, this format is hard to make use of when analyzing data in SQL, the plan is to create another column calledSpellingLocation
inFunctionCall
that can be null if this is not the case.