mirror of
https://github.com/Kitware/CMake.git
synced 2026-02-22 06:59:01 -06:00
fileapi: Add backtraceGraph to codemodel-v2 "directory" object
Co-Authored-by: Kyle Edwards <kyle.edwards@kitware.com>
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user