UNPKG

@eagleoutice/flowr

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

35 lines 2.14 kB
"use strict"; 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: async (formatter, analyzer, 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, await analyzer.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).entries() .filter(([, v]) => !control_flow_graph_1.CfgVertex.isBlock(v)) .map(v => v[0]) .toArray(); } }; //# sourceMappingURL=control-flow-query-format.js.map