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 11120x 11120x 11120x 11120x 11120x 33169x 33169x 33169x 33169x 33169x 33169x 33169x 33169x 33169x 33169x 33169x 33169x 33169x 33169x 33169x 11120x 11120x 10557x 10557x 11120x 11120x 266x 266x 11120x 11120x 282x 282x 282x 20x 20x 262x 282x 39x 39x 39x 6x 6x 1x 1x 5x 5x 5x 5x 5x 39x 262x 262x 262x 11120x 11120x | 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; } } |