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 65 66 67 68 69 70 71 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 10966x 10966x 10966x 10966x 10966x 32704x 32704x 32704x 32704x 32704x 32704x 32704x 32704x 32704x 32704x 32704x 32704x 10966x 10966x 10418x 10418x 10966x 10966x 258x 258x 10966x 10966x 261x 261x 261x 10966x 10966x 327x 327x 327x 327x 327x 327x 322x 322x 5x 5x 5x 5x 2x 2x 5x 1x 1x 1x 1x 1x 5x 3x 3x 3x 10966x 10966x | import {Issue} from "../issue"; import {IRule, IRuleMetadata, RuleTag} from "./_irule"; import {IObject} from "../objects/_iobject"; import {IRegistry} from "../_iregistry"; import {Version} from "../version"; import {BasicRuleConfig} from "./_basic_rule_config"; import {DataDefinition} from "../objects"; export class CDSLegacyViewConf extends BasicRuleConfig { } export class CDSLegacyView implements IRule { private conf = new CDSLegacyViewConf(); private reg: IRegistry; public getMetadata(): IRuleMetadata { return { key: "cds_legacy_view", title: "CDS Legacy View", shortDescription: `Identify CDS Legacy Views`, extendedInformation: `Use DEFINE VIEW ENTITY instead of DEFINE VIEW https://blogs.sap.com/2021/10/16/a-new-generation-of-cds-views-how-to-migrate-your-cds-views-to-cds-view-entities/ v755 and up`, tags: [RuleTag.SingleFile, RuleTag.Upport], }; } public getConfig() { return this.conf; } public setConfig(conf: CDSLegacyViewConf) { this.conf = conf; } public initialize(reg: IRegistry): IRule { this.reg = reg; return this; } public run(o: IObject): Issue[] { const issues: Issue[] = []; if (this.reg.getConfig().getVersion() < Version.v755 && this.reg.getConfig().getVersion() !== Version.Cloud) { return []; } if (o.getType() !== "DDLS") { return []; } if (o instanceof DataDefinition) { const tree = o.getTree(); if (tree === undefined) { return []; // parser error } if (tree.findDirectTokenByText("ENTITY") === undefined) { const file = o.findSourceFile(); if (file) { issues.push(Issue.atRow(file, 1, "CDS Legacy View", this.getMetadata().key, this.getConfig().severity)); } } } return issues; } } |