UNPKG

@abaplint/core

Version:
54 lines 2.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.IdenticalMove = exports.IdenticalMoveConf = void 0; const Statements = require("../abap/2_statements/statements"); const Expressions = require("../abap/2_statements/expressions"); const issue_1 = require("../issue"); const _abap_rule_1 = require("./_abap_rule"); const _basic_rule_config_1 = require("./_basic_rule_config"); const _irule_1 = require("./_irule"); class IdenticalMoveConf extends _basic_rule_config_1.BasicRuleConfig { } exports.IdenticalMoveConf = IdenticalMoveConf; class IdenticalMove extends _abap_rule_1.ABAPRule { constructor() { super(...arguments); this.conf = new IdenticalMoveConf(); } getMetadata() { return { key: "identical_move", title: "Identical move", shortDescription: `Moving the same value from left to right or right to left is redundant.`, tags: [_irule_1.RuleTag.SingleFile], badExample: `DATA lv_value TYPE i. lv_value = lv_value.`, goodExample: `DATA lv_value TYPE i. lv_value = 5.`, }; } getConfig() { return this.conf; } setConfig(conf) { this.conf = conf; } runParsed(file, _obj) { var _a, _b; const issues = []; for (const statement of file.getStatements()) { const statementType = statement.get(); if (statementType instanceof Statements.Move) { const source = (_a = statement.findDirectExpression(Expressions.Source)) === null || _a === void 0 ? void 0 : _a.concatTokens().toUpperCase(); const target = (_b = statement.findDirectExpression(Expressions.Target)) === null || _b === void 0 ? void 0 : _b.concatTokens().toUpperCase(); if (source === target && source !== undefined) { const message = `Identical MOVE from "${source}" to "${target}"`; issues.push(issue_1.Issue.atStatement(file, statement, message, this.getMetadata().key, this.conf.severity)); } } } return issues; } } exports.IdenticalMove = IdenticalMove; //# sourceMappingURL=identical_move.js.map