@abaplint/core
Version:
abaplint - Core API
54 lines • 2.23 kB
JavaScript
;
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