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 11062x 11062x 11062x 11062x 32980x 32980x 32980x 32980x 32980x 32980x 32980x 11062x 11062x 1x 1x 11062x 11062x 10504x 10504x 11062x 11062x 261x 261x 11062x 11062x 276x 276x 276x 276x 13x 13x 263x 276x 1522x 4x 4x 1x 1x 3x 3x 3x 4x 1x 1x 1x 4x 1522x 263x 263x 263x 11062x 11062x | 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; } } |