UNPKG

@eagleoutice/flowr

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

46 lines 2.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.fingerPrintOfQuery = fingerPrintOfQuery; exports.executeStaticSliceQuery = executeStaticSliceQuery; const static_slicer_1 = require("../../../slicing/static/static-slicer"); const reconstruct_1 = require("../../../reconstruct/reconstruct"); const auto_select_defaults_1 = require("../../../reconstruct/auto-select/auto-select-defaults"); const magic_comments_1 = require("../../../reconstruct/auto-select/magic-comments"); const log_1 = require("../../../util/log"); const _00_slice_1 = require("../../../core/steps/all/static-slicing/00-slice"); function fingerPrintOfQuery(query) { return JSON.stringify(query); } function executeStaticSliceQuery({ dataflow, ast, config }, queries) { const start = Date.now(); const results = {}; for (const query of queries) { const key = fingerPrintOfQuery(query); if (results[key]) { log_1.log.warn(`Duplicate Key for slicing-query: ${key}, skipping...`); } const { criteria, noReconstruction, noMagicComments } = query; const sliceStart = Date.now(); const slice = (0, static_slicer_1.staticSlice)(dataflow, ast, criteria, query.direction ?? _00_slice_1.SliceDirection.Backward, config.solver.slicer?.threshold); const sliceEnd = Date.now(); if (noReconstruction) { results[key] = { slice: { ...slice, '.meta': { timing: sliceEnd - sliceStart } } }; } else { const reconstructStart = Date.now(); const reconstruct = (0, reconstruct_1.reconstructToCode)(ast, slice.result, noMagicComments ? auto_select_defaults_1.doNotAutoSelect : (0, magic_comments_1.makeMagicCommentHandler)(auto_select_defaults_1.doNotAutoSelect)); const reconstructEnd = Date.now(); results[key] = { slice: { ...slice, '.meta': { timing: sliceEnd - sliceStart } }, reconstruct: { ...reconstruct, '.meta': { timing: reconstructEnd - reconstructStart } } }; } } return { '.meta': { timing: Date.now() - start }, results }; } //# sourceMappingURL=static-slice-query-executor.js.map