14#include "llvm/Support/Error.h"
15#include "llvm/Support/JSON.h"
19using Array = llvm::json::Array;
20using Object = llvm::json::Object;
25ssaf::buildUnsafeBufferUsageEntitySummary(EntityPointerLevelSet UnsafeBuffers);
27extern llvm::iterator_range<EntityPointerLevelSet::const_iterator>
33 Array UnsafeBuffersData;
35 for (
const auto &EPL : getUnsafeBuffers(SS))
42 const Array *UnsafeBuffersData =
45 if (!UnsafeBuffersData)
49 EntityPointerLevelSet EPLs;
51 for (
const auto &EltData : *UnsafeBuffersData) {
56 return EPL.takeError();
59 return std::make_unique<UnsafeBufferUsageEntitySummary>(
60 buildUnsafeBufferUsageEntitySummary(std::move(EPLs)));
71 UnsafeBufferUsageJSONFormatInfo()
72 : JSONFormat::FormatInfo(UnsafeBufferUsageEntitySummary::summaryName(),
77static llvm::Registry<JSONFormat::FormatInfo>::Add<
78 UnsafeBufferUsageJSONFormatInfo>
81 "JSON Format info for UnsafeBufferUsageEntitySummary");
Manages entity name interning and provides efficient EntityId handles.
Base class for analysis-specific summary data.
An UnsafeBufferUsageEntitySummary contains a set of EntityPointerLevels extracted from unsafe buffer ...
static constexpr llvm::StringLiteral Name
llvm::json::Value entityPointerLevelToJSON(const EntityPointerLevel &EPL, JSONFormat::EntityIdToJSONFn EntityId2JSON)
llvm::Error makeSawButExpectedError(const JSONTy &Saw, llvm::StringRef Expected, const Ts &...ExpectedArgs)
llvm::json::Object Object
Expected< EntityPointerLevel > entityPointerLevelFromJSON(const llvm::json::Value &EPLData, JSONFormat::EntityIdFromJSONFn EntityIdFromJSON)
volatile int UnsafeBufferUsageJSONFormatAnchorSource
The JSON file list parser is used to communicate input to InstallAPI.