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 11002x 11002x 11002x 11002x 11002x 32821x 32821x 32821x 32821x 32821x 32821x 32821x 32821x 32821x 32821x 32821x 32821x 11002x 11002x 10451x 10451x 11002x 11002x 260x 260x 11002x 11002x 276x 276x 276x 20x 20x 256x 276x 38x 38x 38x 6x 6x 1x 1x 5x 5x 5x 5x 5x 38x 256x 256x 256x 11002x 11002x | 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; } } |