@eagleoutice/flowr-dev
Version:
Static Dataflow Analyzer and Program Slicer for the R Programming Language
36 lines • 1.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.executeLintingRule = executeLintingRule;
const linter_rules_1 = require("./linter-rules");
const flowr_search_executor_1 = require("../search/flowr-search-executor");
const objects_1 = require("../util/objects");
/**
* Executes a specific linting rule on the given analysis provider input.
*/
async function executeLintingRule(ruleName, input, lintingRuleConfig) {
try {
const rule = linter_rules_1.LintingRules[ruleName];
const fullConfig = (0, objects_1.deepMergeObject)(rule.info.defaultConfig, lintingRuleConfig);
const ruleSearch = rule.createSearch(fullConfig);
const searchStart = Date.now();
const searchResult = await (0, flowr_search_executor_1.runSearch)(ruleSearch, input);
const searchTime = Date.now() - searchStart;
const processStart = Date.now();
const result = await rule.processSearchResult(searchResult, fullConfig, input);
const processTime = Date.now() - processStart;
return {
...result,
'.meta': {
...(result['.meta'] ?? {}),
searchTimeMs: searchTime,
processTimeMs: processTime
}
};
}
catch (e) {
return {
error: e
};
}
}
//# sourceMappingURL=linter-executor.js.map