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 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 10969x 10969x 10969x 10969x 32704x 32704x 32704x 32704x 32704x 32704x 32704x 10969x 10969x 1x 1x 10969x 10969x 10417x 10417x 10969x 10969x 258x 258x 10969x 10969x 273x 273x 273x 273x 13x 13x 260x 273x 1511x 4x 4x 1x 1x 3x 3x 3x 4x 1x 1x 1x 4x 1511x 260x 260x 260x 10969x 10969x | import {Issue} from "../issue"; import {ABAPRule} from "./_abap_rule"; import {BasicRuleConfig} from "./_basic_rule_config"; import {CallTransformation} from "../abap/2_statements/statements"; import {NamespaceSimpleName} from "../abap/2_statements/expressions"; import {RuleTag} from "./_irule"; import {ABAPFile} from "../abap/abap_file"; export class CheckTransformationExistsConf extends BasicRuleConfig { } export class CheckTransformationExists extends ABAPRule { private conf = new CheckTransformationExistsConf(); public getMetadata() { return { key: "check_transformation_exists", title: "Check transformation exists", shortDescription: `Checks that used XSLT transformations exist.`, tags: [RuleTag.Syntax], }; } private getDescription(name: string): string { return "Transformation \"" + name + "\" not found"; } public getConfig() { return this.conf; } public setConfig(conf: CheckTransformationExistsConf) { this.conf = conf; } public runParsed(file: ABAPFile) { const output: Issue[] = []; const struc = file.getStructure(); if (struc === undefined) { return []; } for (const s of file.getStatements()) { if (s.get() instanceof CallTransformation) { const nameExpression = s.findFirstExpression(NamespaceSimpleName); if (nameExpression === undefined) { continue; } const tok = nameExpression.getFirstToken(); const name = tok.getStr(); if (this.reg.inErrorNamespace(name) === true && this.reg.getObject("XSLT", name) === undefined) { const issue = Issue.atToken(file, tok, this.getDescription(name), this.getMetadata().key); output.push(issue); } } } return output; } } |