fileapi: Add backtraceGraph to codemodel-v2 "directory" object

Co-Authored-by: Kyle Edwards <kyle.edwards@kitware.com>
This commit is contained in:
Brad King
2021-01-14 16:17:56 -05:00
parent a12d7f70b1
commit eae2256a52
3 changed files with 24 additions and 5 deletions

View File

@@ -666,6 +666,10 @@ with members:
directory (with ``.`` for the top-level build directory itself).
Otherwise the path is absolute.
``backtraceGraph``
A `"codemodel" version 2 "backtrace graph"`_ whose nodes are referenced
from ``backtrace`` members elsewhere in this "directory" object.
"codemodel" version 2 "target" object
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -1003,10 +1007,10 @@ with members:
"codemodel" version 2 "backtrace graph"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The ``backtraceGraph`` member of a `"codemodel" version 2 "target" object`_
is a JSON object describing a graph of backtraces. Its nodes are referenced
from ``backtrace`` members elsewhere in the containing object.
The backtrace graph object members are:
The ``backtraceGraph`` member of a `"codemodel" version 2 "directory" object`_,
or `"codemodel" version 2 "target" object`_ is a JSON object describing a
graph of backtraces. Its nodes are referenced from ``backtrace`` members
elsewhere in the containing object. The backtrace graph object members are:
``nodes``
A JSON array listing nodes in the backtrace graph. Each entry

View File

@@ -379,6 +379,9 @@ class DirectoryObject
std::string const& Config;
std::string TopSource;
std::string TopBuild;
BacktraceData Backtraces;
void AddBacktrace(Json::Value& object, cmListFileBacktrace const& bt);
Json::Value DumpPaths();
@@ -814,6 +817,7 @@ DirectoryObject::DirectoryObject(cmLocalGenerator const* lg,
, TopSource(lg->GetGlobalGenerator()->GetCMakeInstance()->GetHomeDirectory())
, TopBuild(
lg->GetGlobalGenerator()->GetCMakeInstance()->GetHomeOutputDirectory())
, Backtraces(this->TopSource)
{
}
@@ -821,9 +825,18 @@ Json::Value DirectoryObject::Dump()
{
Json::Value directoryObject = Json::objectValue;
directoryObject["paths"] = this->DumpPaths();
directoryObject["backtraceGraph"] = this->Backtraces.Dump();
return directoryObject;
}
void DirectoryObject::AddBacktrace(Json::Value& object,
cmListFileBacktrace const& bt)
{
if (JBTIndex backtrace = this->Backtraces.Add(bt)) {
object["backtrace"] = backtrace.Index;
}
}
Json::Value DirectoryObject::DumpPaths()
{
Json::Value paths = Json::objectValue;

View File

@@ -98,11 +98,13 @@ def check_directory(c):
d = json.load(f)
assert is_dict(d)
assert sorted(d.keys()) == ["paths"]
assert sorted(d.keys()) == ["backtraceGraph", "paths"]
assert is_string(d["paths"]["source"], actual["source"])
assert is_string(d["paths"]["build"], actual["build"])
check_backtrace_graph(d["backtraceGraph"])
return _check
def check_backtrace_graph(btg):