@eagleoutice/flowr
Version:
Static Dataflow Analyzer and Program Slicer for the R Programming Language
34 lines • 2.1 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ControlFlowQueryDefinition = void 0;
const ansi_1 = require("../../../util/text/ansi");
const joi_1 = __importDefault(require("joi"));
const control_flow_query_executor_1 = require("./control-flow-query-executor");
const control_flow_graph_1 = require("../../../control-flow/control-flow-graph");
const cfg_1 = require("../../../util/mermaid/cfg");
const cfg_simplification_1 = require("../../../control-flow/cfg-simplification");
exports.ControlFlowQueryDefinition = {
executor: control_flow_query_executor_1.executeControlFlowQuery,
asciiSummarizer: (formatter, processed, queryResults, result) => {
const out = queryResults;
result.push(`Query: ${(0, ansi_1.bold)('control-flow', formatter)} (${out['.meta'].timing.toFixed(0)}ms)`);
result.push(` ╰ CFG: ${(0, cfg_1.cfgToMermaidUrl)(out.controlFlow, processed.normalize)}`);
return true;
},
schema: joi_1.default.object({
type: joi_1.default.string().valid('control-flow').required().description('The type of the query.'),
config: joi_1.default.object({
simplificationPasses: joi_1.default.array().items(joi_1.default.string().valid(...Object.keys(cfg_simplification_1.CfgSimplificationPasses))).description('The simplification passes to apply to the control flow graph. If unset, the default simplification order will be used.')
}).optional().description('Optional configuration for the control flow query.')
}).description('The control flow query provides the control flow graph of the analysis, optionally simplified.'),
flattenInvolvedNodes: (queryResults) => {
const out = queryResults;
return [...out.controlFlow.graph.vertices(true)]
.filter(([, v]) => v.type !== control_flow_graph_1.CfgVertexType.Block)
.map(v => v[0]);
}
};
//# sourceMappingURL=control-flow-query-format.js.map