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 72 73 74 75 76 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 10511x 10511x 10511x 10511x 10511x 31331x 31331x 31331x 31331x 31331x 31331x 31331x 10511x 10511x 9974x 9974x 10511x 10511x 251x 251x 10511x 10511x 271x 271x 271x 120x 120x 54x 54x 53x 54x 1x 1x 1x 54x 120x 271x 271x 122x 122x 48x 48x 46x 48x 2x 2x 2x 48x 122x 271x 271x 56x 56x 14x 14x 13x 14x 1x 1x 1x 14x 56x 271x 271x 271x 10511x 10511x | import {ABAPRule} from "./_abap_rule"; import {BasicRuleConfig} from "./_basic_rule_config"; import {Issue} from "../issue"; import {IRuleMetadata, RuleTag} from "./_irule"; import {ABAPFile} from "../abap/abap_file"; export class MethodImplementedTwiceConf extends BasicRuleConfig { } export class MethodImplementedTwice extends ABAPRule { private conf = new MethodImplementedTwiceConf(); public getMetadata(): IRuleMetadata { return { key: "method_implemented_twice", title: "Method implemented twice", shortDescription: `Reports an error if a method is implemented or defined twice`, tags: [RuleTag.SingleFile, RuleTag.Syntax], }; } public getConfig() { return this.conf; } public setConfig(conf: MethodImplementedTwiceConf): void { this.conf = conf; } public runParsed(file: ABAPFile) { const issues: Issue[] = []; for (const classDef of file.getInfo().listClassImplementations()) { const names: {[index: string]: boolean} = {}; for (const m of classDef.methods) { const name = m.getName().toUpperCase(); if (names[name] === undefined) { names[name] = true; } else { const message = `Method ${name} implemented twice`; issues.push(Issue.atToken(file, m.getToken(), message, this.getMetadata().key, this.getConfig().severity)); } } } for (const classDef of file.getInfo().listClassDefinitions()) { const names: {[index: string]: boolean} = {}; for (const m of classDef.methods) { const name = m.name.toUpperCase(); if (names[name] === undefined) { names[name] = true; } else { const message = `Method ${name} defined twice`; issues.push(Issue.atToken(file, m.identifier.getToken(), message, this.getMetadata().key, this.getConfig().severity)); } } } for (const iDef of file.getInfo().listInterfaceDefinitions()) { const names: {[index: string]: boolean} = {}; for (const m of iDef.methods) { const name = m.name.toUpperCase(); if (names[name] === undefined) { names[name] = true; } else { const message = `Method ${name} implemented twice`; issues.push(Issue.atIdentifier(m.identifier, message, this.getMetadata().key, this.getConfig().severity)); } } } return issues; } } |