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 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 11057x 11057x 11057x 11057x 11057x 32985x 32985x 32985x 32985x 32985x 32985x 32985x 32985x 32985x 32985x 32985x 32985x 11057x 11057x 10504x 10504x 11057x 11057x 261x 261x 11057x 11057x 277x 277x 277x 20x 20x 257x 277x 38x 38x 38x 6x 6x 1x 1x 5x 5x 5x 5x 5x 38x 257x 257x 257x 11057x 11057x | 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`, 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; } } |