auto-cr-rules
Version:
Extensible static analysis rule set for the auto-cr automated code review toolkit
59 lines (58 loc) • 2.23 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.toRule = exports.isRule = exports.RuleSeverity = void 0;
exports.defineRule = defineRule;
var RuleSeverity;
(function (RuleSeverity) {
RuleSeverity["Error"] = "error";
RuleSeverity["Warning"] = "warning";
RuleSeverity["Optimizing"] = "optimizing";
})(RuleSeverity || (exports.RuleSeverity = RuleSeverity = {}));
function defineRule(name, metadataOrRunner, maybeRunner) {
var _a;
var metadata = typeof metadataOrRunner === 'function' ? {} : metadataOrRunner;
var runner = typeof metadataOrRunner === 'function' ? metadataOrRunner : maybeRunner;
if (!runner) {
throw new Error('defineRule requires a rule runner function');
}
return __assign(__assign({ name: name }, metadata), { severity: (_a = metadata.severity) !== null && _a !== void 0 ? _a : RuleSeverity.Error, run: runner });
}
var isRule = function (value) {
return (typeof value === 'object' &&
value !== null &&
typeof value.name === 'string' &&
typeof value.run === 'function' &&
(typeof value.tag === 'undefined' ||
typeof value.tag === 'string') &&
(typeof value.severity === 'undefined' ||
(typeof value.severity === 'string' &&
Object.values(RuleSeverity).includes(value.severity))));
};
exports.isRule = isRule;
var toRule = function (value, origin) {
var _a;
if ((0, exports.isRule)(value)) {
return __assign({ severity: (_a = value.severity) !== null && _a !== void 0 ? _a : RuleSeverity.Error }, value);
}
if (typeof value === 'function') {
var fn = value;
return {
name: fn.name || origin,
severity: RuleSeverity.Error,
run: fn,
};
}
return null;
};
exports.toRule = toRule;