We now compute a distance from the main file to the symbol header, which
is a weighted count of:
- some number of #include traversals from source file --> included file
- some number of FS traversals from file --> parent directory
- some number of FS traversals from parent directory --> child file/dir
This calculation is performed in the appropriate URI scheme.
This means we'll get some proximity boost from header files in main-file
contexts, even when these are in different directory trees.
This extended file proximity model is not yet incorporated in the index
interface/implementation.
Reviewer guide (decreasing order of complexity):
- FileDistance is new, and contains the algorithm/structures for computing the file distances efficiently from a set of weighted roots
- Headers has significant changes: the IncludeStructure class expands the scope of include info we previously captured
- Quality uses these to implement the new definition of SemaProximityScore
- CodeComplete has a bit of churn because the lifetimes there are so complicated
- the rest is boilerplate
It might make sense to briefly explain somewhere how computational cost is distributed across the workflow.