UNPKG

@abaplint/core

Version:
51 lines (50 loc) 1.88 kB
"use strict"; 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