@abaplint/core
Version:
abaplint - Core API
51 lines (50 loc) • 1.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.NoExternalFormCalls = exports.NoExternalFormCallsConf = void 0;
const Statements = require("../abap/2_statements/statements");
const Expressions = require("../abap/2_statements/expressions");
const _abap_rule_1 = require("./_abap_rule");
const _basic_rule_config_1 = require("./_basic_rule_config");
const issue_1 = require("../issue");
const _irule_1 = require("./_irule");
class NoExternalFormCallsConf extends _basic_rule_config_1.BasicRuleConfig {
}
exports.NoExternalFormCallsConf = NoExternalFormCallsConf;
class NoExternalFormCalls extends _abap_rule_1.ABAPRule {
constructor() {
super(...arguments);
this.conf = new NoExternalFormCallsConf();
}
getMetadata() {
return {
key: "no_external_form_calls",
title: "No external FORM calls",
shortDescription: `Detect external form calls`,
badExample: `PERFORM foo IN PROGRAM bar.
PERFORM foo(bar).`,
tags: [_irule_1.RuleTag.SingleFile],
};
}
getConfig() {
return this.conf;
}
setConfig(conf) {
this.conf = conf;
}
runParsed(file) {
const issues = [];
const stru = file.getStructure();
if (stru === undefined) {
return issues; // parser error
}
for (const p of stru.findAllStatements(Statements.Perform)) {
if (p.findDirectExpression(Expressions.IncludeName) || p.findDirectTokenByText("PROGRAM")) {
const message = "No external FORM calls";
issues.push(issue_1.Issue.atStatement(file, p, message, this.getMetadata().key, this.conf.severity));
}
}
return issues;
}
}
exports.NoExternalFormCalls = NoExternalFormCalls;
//# sourceMappingURL=no_external_form_calls.js.map