@eagleoutice/flowr
Version:
Static Dataflow Analyzer and Program Slicer for the R Programming Language
44 lines • 2.55 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.LinterQueryDefinition = void 0;
const joi_1 = __importDefault(require("joi"));
const linter_query_executor_1 = require("./linter-query-executor");
const linter_rules_1 = require("../../../linter/linter-rules");
const linter_format_1 = require("../../../linter/linter-format");
const ansi_1 = require("../../../util/text/ansi");
const time_1 = require("../../../util/text/time");
const doc_code_1 = require("../../../documentation/doc-util/doc-code");
exports.LinterQueryDefinition = {
executor: linter_query_executor_1.executeLinterQuery,
asciiSummarizer: (formatter, _processed, queryResults, result) => {
const out = queryResults;
result.push(`Query: ${(0, ansi_1.bold)('linter', formatter)} (${(0, time_1.printAsMs)(out['.meta'].timing, 0)})`);
for (const [ruleName, results] of Object.entries(out.results)) {
const rule = linter_rules_1.LintingRules[ruleName];
result.push(` ╰ ${ruleName}:`);
for (const certainty of [linter_format_1.LintingCertainty.Definitely, linter_format_1.LintingCertainty.Maybe]) {
const certaintyResults = results.results.filter(r => r.certainty === certainty);
if (certaintyResults.length) {
result.push(` ╰ ${certainty}:`);
for (const res of certaintyResults) {
result.push(` ╰ ${rule.prettyPrint(res)}`);
}
}
}
result.push(` ╰ _Metadata_: ${(0, doc_code_1.codeInline)(JSON.stringify(results['.meta']))}`);
}
return true;
},
schema: joi_1.default.object({
type: joi_1.default.string().valid('linter').required().description('The type of the query.'),
rules: joi_1.default.array().items(joi_1.default.string().valid(...Object.keys(linter_rules_1.LintingRules)), joi_1.default.object({
name: joi_1.default.string().valid(...Object.keys(linter_rules_1.LintingRules)).required(),
config: joi_1.default.object()
})).description('The rules to lint for. If unset, all rules will be included.')
}).description('The linter query lints for the given set of rules and returns the result.'),
flattenInvolvedNodes: () => []
};
//# sourceMappingURL=linter-query-format.js.map