pi-lens
Version:
Real-time code feedback for pi — LSP, linters, formatters, type-checking, structural analysis & booboo
31 lines (30 loc) • 1.22 kB
JavaScript
/**
* Fact-rules runner — executes all registered FactRule instances against
* the populated fact store. Each FactRule has its own appliesTo() guard
* so this runner can be registered broadly; rules self-select.
*
* Severity semantics follow each rule's own diagnostic output.
* Blocking rules surface on every write; warning-tier rules surface
* only during full scans (blockingOnly === false).
*/
import { PRIORITY } from "../priorities.js";
import { evaluateRules } from "../fact-rule-runner.js";
const factRulesRunner = {
id: "fact-rules",
appliesTo: ["jsts", "python", "go", "rust", "ruby", "shell", "cmake"],
priority: PRIORITY.GENERAL_ANALYSIS + 1,
enabledByDefault: true,
async run(ctx) {
const diagnostics = evaluateRules(ctx);
if (diagnostics.length === 0) {
return { status: "succeeded", diagnostics: [], semantic: "none" };
}
const hasBlocking = diagnostics.some((d) => d.semantic === "blocking" || d.severity === "error");
return {
status: hasBlocking ? "failed" : "succeeded",
diagnostics,
semantic: hasBlocking ? "blocking" : "warning",
};
},
};
export default factRulesRunner;