UNPKG

@eagleoutice/flowr

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

31 lines 1.4 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"); /** * Executes the given linter queries using the provided analyzer. * @see {@link executeLintingRule} */ async function executeLinterQuery({ analyzer }, 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(); for (const entry of distinct) { const ruleName = typeof entry === 'string' ? entry : entry.name; results.results[ruleName] = await (0, linter_executor_1.executeLintingRule)(ruleName, analyzer, entry?.config); } return { ...results, '.meta': { timing: Date.now() - start } }; } //# sourceMappingURL=linter-query-executor.js.map