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 11154x 11154x 11154x 11154x 11154x 33245x 33245x 33245x 33245x 33245x 33245x 33245x 11154x 11154x 10587x 10587x 11154x 11154x 266x 266x 11154x 11154x 285x 285x 285x 123x 123x 57x 57x 56x 57x 1x 1x 1x 57x 123x 285x 285x 125x 125x 51x 51x 49x 51x 2x 2x 2x 51x 125x 285x 285x 57x 57x 14x 14x 13x 14x 1x 1x 1x 14x 57x 285x 285x 285x 11154x 11154x | 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; } } |