UNPKG

@eagleoutice/flowr

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

28 lines 1.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.executeLinterQuery = executeLinterQuery; const linter_rules_1 = require("../../../linter/linter-rules"); const log_1 = require("../../../util/log"); const linter_executor_1 = require("../../../linter/linter-executor"); function executeLinterQuery({ ast, dataflow }, queries) { const flattened = queries.flatMap(q => q.rules ?? Object.keys(linter_rules_1.LintingRules)); const distinct = new Set(flattened); if (distinct.size !== flattened.length) { const pretty = [...distinct].filter(r => flattened.indexOf(r) !== flattened.lastIndexOf(r)).map(r => typeof r === 'string' ? r : r.name).join(', '); log_1.log.warn(`Linter query collection contains duplicate rules ${pretty}, only linting for each rule once`); } const results = { results: {} }; const start = Date.now(); const input = { normalize: ast, dataflow }; for (const entry of distinct) { const ruleName = typeof entry === 'string' ? entry : entry.name; results.results[ruleName] = (0, linter_executor_1.executeLintingRule)(ruleName, input, entry?.config); } return { ...results, '.meta': { timing: Date.now() - start } }; } //# sourceMappingURL=linter-query-executor.js.map