@eagleoutice/flowr
Version:
Static Dataflow Analyzer and Program Slicer for the R Programming Language
28 lines • 1.33 kB
JavaScript
;
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