@eagleoutice/flowr
Version:
Static Dataflow Analyzer and Program Slicer for the R Programming Language
34 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");
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, input);
const searchStart = Date.now();
const searchResult = (0, flowr_search_executor_1.runSearch)(ruleSearch, input);
const searchTime = Date.now() - searchStart;
const processStart = Date.now();
const result = rule.processSearchResult(searchResult, fullConfig, input);
const processTime = Date.now() - processStart;
return {
...result,
'.meta': {
...result['.meta'],
searchTimeMs: searchTime,
processTimeMs: processTime
}
};
}
catch (e) {
const msg = typeof e === 'string' ? e : e instanceof Error ? e.message : JSON.stringify(e);
return {
error: msg
};
}
}
//# sourceMappingURL=linter-executor.js.map