Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 11750x 11750x 11750x 11750x 11750x 35101x 35101x 35101x 35101x 35101x 35101x 35101x 35101x 35101x 35101x 35101x 35101x 35101x 35101x 35101x 11750x 11750x 11241x 11241x 11750x 11750x 239x 239x 11750x 11750x 255x 255x 255x 20x 20x 235x 255x 25x 25x 25x 5x 5x 1x 1x 4x 4x 4x 4x 4x 25x 235x 235x 235x 11750x 11750x | import {Issue} from "../issue";
import * as Expressions from "../abap/2_statements/expressions";
import {ABAPRule} from "./_abap_rule";
import {BasicRuleConfig} from "./_basic_rule_config";
import {IRuleMetadata, RuleTag} from "./_irule";
import {ABAPFile} from "../abap/abap_file";
import {ABAPObject} from "../objects/_abap_object";
export class SyModificationConf extends BasicRuleConfig {
}
export class SyModification extends ABAPRule {
private conf = new SyModificationConf();
public getMetadata(): IRuleMetadata {
return {
key: "sy_modification",
title: "Modification of SY fields",
shortDescription: `Finds modification of sy fields`,
extendedInformation: `https://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/abensystem_fields.htm
Changes to SY-TVAR* fields are not reported
Modification of SY fields is not allwed in ABAP Cloud language version,
https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/ABENSYSTEM_FIELDS.html`,
tags: [RuleTag.SingleFile],
badExample: `sy-uname = 2.
sy = sy.`,
};
}
public getConfig() {
return this.conf;
}
public setConfig(conf: SyModificationConf) {
this.conf = conf;
}
public runParsed(file: ABAPFile, obj: ABAPObject) {
const issues: Issue[] = [];
if (obj.getType() === "INTF") {
return [];
}
for (const t of file.getStructure()?.findAllExpressions(Expressions.Target) || []) {
const firstChild = t.getChildren()[0];
if (firstChild.get() instanceof Expressions.TargetField
&& firstChild.getFirstToken().getStr().toUpperCase() === "SY") {
if (t.concatTokens().toUpperCase().startsWith("SY-TVAR")) {
continue;
}
const message = "Modification of SY field";
const issue = Issue.atToken(file, firstChild.getFirstToken(), message, this.getMetadata().key, this.conf.severity);
issues.push(issue);
}
}
return issues;
}
} |