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 11125x 11125x 11125x 11125x 33164x 33164x 33164x 33164x 33164x 33164x 33164x 11125x 11125x 1x 1x 11125x 11125x 10557x 10557x 11125x 11125x 266x 266x 11125x 11125x 281x 281x 281x 281x 13x 13x 268x 281x 1567x 4x 4x 1x 1x 3x 3x 3x 4x 1x 1x 1x 4x 1567x 268x 268x 268x 11125x 11125x | 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; } } |